我是arry
喜欢这个
var data = [{
category: "2014-1-1",
subCategory: [{
name: "shoe",
val: 70,
toolTip: "toolTip-shoe-70",
drill: false
}, {
name: "pant",
val: 60,
toolTip: "toolTip-pant-60",
drill: false
}, {
name: "shirt",
val: 50,
toolTip: "toolTip-shirt-50",
drill: false
}, {
name: "Tshirt",
val: 40,
toolTip: "toolTip-Tshirt-40",
drill: true
}, {
name: "socks",
val: 30,
toolTip: "toolTip-socks-30",
drill: false
}, {
name: "watchs",
val: 20,
toolTip: "toolTip-watchs-20",
drill: false
}, {
name: "hats",
val: 10,
toolTip: "toolTip-hats-10",
drill: false
}]
}, {
category: "2014-3-2",
subCategory: [{
name: "shoe",
val: 16,
toolTip: "toolTip-shoe-16",
drill: false
}, {
name: "pant",
val: 12,
toolTip: "toolTip-pant-12",
drill: false
}, {
name: "shirt",
val: 14,
toolTip: "toolTip-shirt-14",
drill: false
}, {
name: "Tshirt",
val: 13,
toolTip: "toolTip-Tshirt-13",
drill: false
}, {
name: "socks",
val: 22,
toolTip: "toolTip-socks-22",
drill: true
}, {
name: "watchs",
val: 31,
toolTip: "toolTip-watchs-31",
drill: false
}, {
name: "hats",
val: 21,
toolTip: "toolTip-hats-21",
drill: false
}]
}, {
category: "2014-6-3",
subCategory: [{
name: "shoe",
val: 22,
toolTip: "toolTip-shoe-22",
drill: false
}, {
name: "pant",
val: 25,
toolTip: "toolTip-pant-25",
drill: false
}, {
name: "shirt",
val: 28,
toolTip: "toolTip-shirt-28",
drill: false
}, {
name: "Tshirt",
val: 33,
toolTip: "toolTip-Tshirt-33",
drill: false
}, {
name: "socks",
val: 25,
toolTip: "toolTip-socks-25",
drill: false
}, {
name: "watchs",
val: 40,
toolTip: "toolTip-watchs-40",
drill: false
}, {
name: "hats",
val: 38,
toolTip: "toolTip-hats-38",
drill: true
}]
}, {
category: "2014-9-3",
subCategory: [{
name: "shoe",
val: 25,
toolTip: "toolTip-shoe-25",
drill: false
}, {
name: "pant",
val: 33,
toolTip: "toolTip-pant-33",
drill: false
}, {
name: "shirt",
val: 37,
toolTip: "toolTip-shirt-37",
drill: false
}, {
name: "Tshirt",
val: 38,
toolTip: "toolTip-Tshirt-38",
drill: false
}, {
name: "socks",
val: 32,
toolTip: "toolTip-socks-32",
drill: false
}, {
name: "watchs",
val: 28,
toolTip: "toolTip-watchs-28",
drill: true
}, {
name: "hats",
val: 41,
toolTip: "toolTip-hats-41",
drill: false
}]
}, {
category: "2014-12-4",
subCategory: [{
name: "shoe",
val: 22,
toolTip: "toolTip-shoe-22",
drill: false
}, {
name: "pant",
val: 41,
toolTip: "toolTip-pant-41",
drill: false
}, {
name: "shirt",
val: 33,
toolTip: "toolTip-shirt-33",
drill: false
}, {
name: "Tshirt",
val: 22,
toolTip: "toolTip-Tshirt-22",
drill: false
}, {
name: "socks",
val: 11,
toolTip: "toolTip-socks-11",
drill: false
}, {
name: "watchs",
val: 39,
toolTip: "toolTip-watchs-39",
drill: false
}, {
name: "hats",
val: 32,
toolTip: "toolTip-hats-32",
drill: false
}]
}, {
category: "2015-3-5",
subCategory: [{
name: "shoe",
val: 33,
toolTip: "toolTip-shoe-33",
drill: false
}, {
name: "pant",
val: 51,
toolTip: "toolTip-pant-51",
drill: false
}, {
name: "shirt",
val: 43,
toolTip: "toolTip-shirt-43",
drill: false
}, {
name: "Tshirt",
val: 43,
toolTip: "toolTip-Tshirt-43",
drill: false
}, {
name: "socks",
val: 46,
toolTip: "toolTip-socks-46",
drill: false
}, {
name: "watchs",
val: 47,
toolTip: "toolTip-watchs-47",
drill: false
}, {
name: "hats",
val: 49,
toolTip: "toolTip-hats-49",
drill: false
}]
}];
我想基于以下数组从此数组中过滤subCategory
。
var arr = ["hats", "watchs"];
因为我已经完成了以下操作,但它没有过滤
var data = [{
category: "2014-1-1",
subCategory: [{
name: "shoe",
val: 70,
toolTip: "toolTip-shoe-70",
drill: false
}, {
name: "pant",
val: 60,
toolTip: "toolTip-pant-60",
drill: false
}, {
name: "shirt",
val: 50,
toolTip: "toolTip-shirt-50",
drill: false
}, {
name: "Tshirt",
val: 40,
toolTip: "toolTip-Tshirt-40",
drill: true
}, {
name: "socks",
val: 30,
toolTip: "toolTip-socks-30",
drill: false
}, {
name: "watchs",
val: 20,
toolTip: "toolTip-watchs-20",
drill: false
}, {
name: "hats",
val: 10,
toolTip: "toolTip-hats-10",
drill: false
}]
}, {
category: "2014-3-2",
subCategory: [{
name: "shoe",
val: 16,
toolTip: "toolTip-shoe-16",
drill: false
}, {
name: "pant",
val: 12,
toolTip: "toolTip-pant-12",
drill: false
}, {
name: "shirt",
val: 14,
toolTip: "toolTip-shirt-14",
drill: false
}, {
name: "Tshirt",
val: 13,
toolTip: "toolTip-Tshirt-13",
drill: false
}, {
name: "socks",
val: 22,
toolTip: "toolTip-socks-22",
drill: true
}, {
name: "watchs",
val: 31,
toolTip: "toolTip-watchs-31",
drill: false
}, {
name: "hats",
val: 21,
toolTip: "toolTip-hats-21",
drill: false
}]
}, {
category: "2014-6-3",
subCategory: [{
name: "shoe",
val: 22,
toolTip: "toolTip-shoe-22",
drill: false
}, {
name: "pant",
val: 25,
toolTip: "toolTip-pant-25",
drill: false
}, {
name: "shirt",
val: 28,
toolTip: "toolTip-shirt-28",
drill: false
}, {
name: "Tshirt",
val: 33,
toolTip: "toolTip-Tshirt-33",
drill: false
}, {
name: "socks",
val: 25,
toolTip: "toolTip-socks-25",
drill: false
}, {
name: "watchs",
val: 40,
toolTip: "toolTip-watchs-40",
drill: false
}, {
name: "hats",
val: 38,
toolTip: "toolTip-hats-38",
drill: true
}]
}, {
category: "2014-9-3",
subCategory: [{
name: "shoe",
val: 25,
toolTip: "toolTip-shoe-25",
drill: false
}, {
name: "pant",
val: 33,
toolTip: "toolTip-pant-33",
drill: false
}, {
name: "shirt",
val: 37,
toolTip: "toolTip-shirt-37",
drill: false
}, {
name: "Tshirt",
val: 38,
toolTip: "toolTip-Tshirt-38",
drill: false
}, {
name: "socks",
val: 32,
toolTip: "toolTip-socks-32",
drill: false
}, {
name: "watchs",
val: 28,
toolTip: "toolTip-watchs-28",
drill: true
}, {
name: "hats",
val: 41,
toolTip: "toolTip-hats-41",
drill: false
}]
}, {
category: "2014-12-4",
subCategory: [{
name: "shoe",
val: 22,
toolTip: "toolTip-shoe-22",
drill: false
}, {
name: "pant",
val: 41,
toolTip: "toolTip-pant-41",
drill: false
}, {
name: "shirt",
val: 33,
toolTip: "toolTip-shirt-33",
drill: false
}, {
name: "Tshirt",
val: 22,
toolTip: "toolTip-Tshirt-22",
drill: false
}, {
name: "socks",
val: 11,
toolTip: "toolTip-socks-11",
drill: false
}, {
name: "watchs",
val: 39,
toolTip: "toolTip-watchs-39",
drill: false
}, {
name: "hats",
val: 32,
toolTip: "toolTip-hats-32",
drill: false
}]
}, {
category: "2015-3-5",
subCategory: [{
name: "shoe",
val: 33,
toolTip: "toolTip-shoe-33",
drill: false
}, {
name: "pant",
val: 51,
toolTip: "toolTip-pant-51",
drill: false
}, {
name: "shirt",
val: 43,
toolTip: "toolTip-shirt-43",
drill: false
}, {
name: "Tshirt",
val: 43,
toolTip: "toolTip-Tshirt-43",
drill: false
}, {
name: "socks",
val: 46,
toolTip: "toolTip-socks-46",
drill: false
}, {
name: "watchs",
val: 47,
toolTip: "toolTip-watchs-47",
drill: false
}, {
name: "hats",
val: 49,
toolTip: "toolTip-hats-49",
drill: false
}]
}];
var arr = ["hats", "watchs"];
var abc = data.filter(function (category) {
var obj = {};
var arr1 = [];
category.subCategory.filter(function (d) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] != d.name) {
arr1.push(d);
}
}
});
obj["category"] = category.category;
obj["subCategory"] = arr1;
return obj;
});
console.log(abc);
console.log(data);
&#13;
答案 0 :(得分:0)
您可以使用.filter
来提取所需内容:
var filteredData = data.filter(function(topLevel) {
topLevel.subCategory = topLevel.subCategory.filter(function(bottomLevel) {
return arr.indexOf(bottomLevel.name) < 0;
})
return topLevel.subCategory.length;
});
答案 1 :(得分:0)
First example of doing it:
var result = [].concat.apply([], data.map(function (child) {
return child.subCategory;
})).filter(function (item) {
return arr.indexOf(item.name) >= 0;
});
Second example:
var result2 = data.reduce(function(prev, current) {
return prev.concat(current.subCategory);
}, []).reduce(function (prev, current) {
if (arr.indexOf(current.name) >= 0) {
prev.push(current);
}
return prev;
}, []);