我有一个json对象,它看起来像这样,并且我在json对象中有“sku”值的随机参数。
喜欢
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;
});
}发布于 2013-10-24 18:50:45
这就是解决我问题的方法。
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;
});
}发布于 2013-10-24 16:09:08
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";发布于 2013-10-24 18:15:23
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/
https://stackoverflow.com/questions/19569925
复制相似问题