[英]get the object matched with value provided in the json object using jquery?
我有一個json對象看起來像這樣,我有和我的json對象中的“skus”值的隨機參數
喜歡
var mytestvalue="Fit:Regular,Color:Coyote (120)"; or
var mytestvalue="Color:Coyote (120),Fit:Regular";
[
{
"index":0,
"title":"Foo1",
"skus":"Fit:Regular,Size:6,Color:Coyote (120)",
},
{
"index":1,
"title":"Foo2",
"skus":"Fit:Regular,Color:Coyote (120),Size:65",
},
{
"index":2,
"title":"Foo3",
"skus":"Fit:Regular,Size:7,Color:Coyote (120)",
},
{
"index":0,
"title":"Foo4",
"skus":"Color:Coyote (120),Fit:Regular,Size:7.5",
},
{
"index":1,
"title":"Foo5",
"skus":"Fit:Slim,Size:8,Color:Coyote (120)",
},
{
"index":2,
"title":"Foo6",
"skus":"Fit:Regular,Size:9,Color:Coyote (120)",
},
{
"index":0,
"title":"Foo7",
"skus":"Fit:Regular,Size:8.5,Color:Coyote (120)",
},
{
"index":1,
"title":"Foo8",
"skus":"Fit:Regular,Size:10,Color:Coyote (120)",
},
{
"index":2,
"title":"Foo9",
"skus":"Fit:Slim,Color:Coyote (120),Size:13",
},
{
"index":0,
"title":"Foo10",
"skus":"Fit:Regular,Size:8.5,Color:Coyote (120)",
},
{
"index":1,
"title":"Foo11",
"skus":"Fit:Regular,Size:10,Color:Coyote (120)",
},
{
"index":2,
"title":"Foo12",
"skus":"Fit:Regular,Color:Coyote (120),Size:13",
}
]
我寫了一個函數來獲得skus與變量的匹配組合
function getSkuCombinations(obj,prodskuval) {
var combres = $.grep(obj, function (o) { //Will give you all the matches
return o.SKUOptions.indexOf(prodskuval) > -1;
});
return combres;
}
我這樣稱呼這個功能
var combinationresults=getSkuCombinations(myobj,mytestvalue)
當我這樣做時,我應該得到所有skus,其中包含我通過的組合“mytestvalue”,但此功能現在只返回給我
var myresult= [{
"index":1,
"title":"Foo2",
"skus":"Fit:Regular,Color:Coyote (120),Size:65",
}]
任何人都可以幫助我這樣做
這個功能解決了我的問題,
function getSkuCombinations(obj,prodskuval) {
var combres = $.grep(obj, function (o) { //Will give you all the matches
var newskus=o.skus.split(',').sort().join(',');
var newprdskus=prodskuval.split(',').sort().join(',');
return newskus.indexOf(newprdskus) > -1;
});
}
var mytestvalue="Fit:Regular,Color:Coyote (120)"; or
var mytestvalue="Color:Coyote (120),Fit:Regular";
var myobj = [
{
"index":0,
"title":"Foo1",
"skus":"Fit:Regular,Size:6,Color:Coyote (120)",
},
{
"index":1,
"title":"Foo2",
"skus":"Fit:Regular,Color:Coyote (120),Size:65",
},
{
"index":2,
"title":"Foo3",
"skus":"Fit:Regular,Size:7,Color:Coyote (120)",
},
{
"index":0,
"title":"Foo4",
"skus":"Color:Coyote (120),Fit:Regular,Size:7.5",
},
{
"index":1,
"title":"Foo5",
"skus":"Fit:Slim,Size:8,Color:Coyote (120)",
},
{
"index":2,
"title":"Foo6",
"skus":"Fit:Regular,Size:9,Color:Coyote (120)",
},
{
"index":0,
"title":"Foo7",
"skus":"Fit:Regular,Size:8.5,Color:Coyote (120)",
},
{
"index":1,
"title":"Foo8",
"skus":"Fit:Regular,Size:10,Color:Coyote (120)",
},
{
"index":2,
"title":"Foo9",
"skus":"Fit:Slim,Color:Coyote (120),Size:13",
},
{
"index":0,
"title":"Foo10",
"skus":"Fit:Regular,Size:8.5,Color:Coyote (120)",
},
{
"index":1,
"title":"Foo11",
"skus":"Fit:Regular,Size:10,Color:Coyote (120)",
},
{
"index":2,
"title":"Foo12",
"skus":"Fit:Regular,Color:Coyote (120),Size:13",
}
]
這是你的新功能:
function getSkuCombinations(obj, prodskuval) {
var combres = $.grep(obj, function (o) { //Will give you all the matches
return o.skus.split(',').sort().toString() == prodskuval.split(',').sort().toString();
});
return combres;
}
函數getSkuCombinations必須考慮這兩種情況:
var mytestvalue="Fit:Regular,Color:Coyote (120)"; or
var mytestvalue="Color:Coyote (120),Fit:Regular";
var checkSKU = function (obj, testValue) {
var results = [];
obj.forEach(function (item) {
if (item.skus.indexOf(testValue) > -1) {
results.push(item);
}
});
return results;
};
JSFiddle測試用例: http : //jsfiddle.net/N9V9q/3/
嘗試這個 :
function getSkuCombinations(obj,prodskuval){var combres = $ .each(obj,function(key,value){//會給你所有的匹配返回val.skus.indexOf(prodskuval)> -1;}); }
用Node.js測試過它。 如果您將SKUOptions
(dunno SKUOptions
)更改為skus
( myobj
JSON中對象的屬性),那么它可以工作:
var $ = require('jquery');
var mytestvalue = "Fit:Regular,Color:Coyote (120)";
// var mytestvalue = "Color:Coyote (120),Fit:Regular";
var myobj = [{
"index": 0,
"title": "Foo1",
"skus": "Fit:Regular,Size:6,Color:Coyote (120)",
}, {
"index": 1,
"title": "Foo2",
"skus": "Fit:Regular,Color:Coyote (120),Size:65",
}, {
"index": 2,
"title": "Foo3",
"skus": "Fit:Regular,Size:7,Color:Coyote (120)",
}, {
"index": 0,
"title": "Foo4",
"skus": "Color:Coyote (120),Fit:Regular,Size:7.5",
}, {
"index": 1,
"title": "Foo5",
"skus": "Fit:Slim,Size:8,Color:Coyote (120)",
}, {
"index": 2,
"title": "Foo6",
"skus": "Fit:Regular,Size:9,Color:Coyote (120)",
}, {
"index": 0,
"title": "Foo7",
"skus": "Fit:Regular,Size:8.5,Color:Coyote (120)",
}, {
"index": 1,
"title": "Foo8",
"skus": "Fit:Regular,Size:10,Color:Coyote (120)",
}, {
"index": 2,
"title": "Foo9",
"skus": "Fit:Slim,Color:Coyote (120),Size:13",
}, {
"index": 0,
"title": "Foo10",
"skus": "Fit:Regular,Size:8.5,Color:Coyote (120)",
}, {
"index": 1,
"title": "Foo11",
"skus": "Fit:Regular,Size:10,Color:Coyote (120)",
}, {
"index": 2,
"title": "Foo12",
"skus": "Fit:Regular,Color:Coyote (120),Size:13",
}];
function getSkuCombinations(obj, prodskuval) {
var combres = $.grep(obj, function(o) { //Will give you all the matches
return o.skus.indexOf(prodskuval) > -1;
});
return combres;
}
var combinationresults = getSkuCombinations(myobj, mytestvalue)
console.log(combinationresults);
返回:
[ { index: 1,
title: 'Foo2',
skus: 'Fit:Regular,Color:Coyote (120),Size:65' },
{ index: 2,
title: 'Foo12',
skus: 'Fit:Regular,Color:Coyote (120),Size:13' } ]
jsFiddle (查找console.log) : http : //jsfiddle.net/Saran/Y8wwE/
這是解決我問題的方法
function getSkuCombinations(obj,prodskuval) {
var combres = $.grep(obj, function (o) { //Will give you all the matches
var newskus=o.skus.split(',').sort().join(',');
var newprdskus=prodskuval.split(',').sort().join(',');
return newskus.indexOf(newprdskus) > -1;
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.