我正在尝试从数组中仅过滤只有效产品。
var myArr = [
[{
product: "Test",
price: 30,
active: true
},
{
product: "Test2",
price: 50,
active: true
}],
[{
product: "Test3",
price: 60,
active: false
},
{
product: "Test4",
price: 50,
active: true
}]
]
过滤有效产品的最佳做法是什么?
答案 0 :(得分:3)
这是一个嵌套数组,因此您必须根据active == true
对其进行两次过滤。
请找到以下解决方案:
var myArr = [
[{
product: "Test",
price: 30,
active: true
},
{
product: "Test2",
price: 50,
active: true
}],
[{
product: "Test3",
price: 60,
active: false
},
{
product: "Test4",
price: 50,
active: true
}]
];
var newArray = [];
myArr.filter(function (el) {
el.filter(function(e2)
{
if(e2.active)
{
newArray.push(e2);
}
});
});
console.log(newArray);
您还可以通过使用foreach来获得结果
var newArray = [];
myArr.forEach((val,key)=>{
val.forEach((val1,key1)=>{
if(val1.active)
{
newArray.push(val1);
}
});
});
console.log(newArray);
OR
var newArray = [];
var singleArray = [].concat(...myArr);
singleArray.forEach((val,key)=>{
if(val.active)
{
newArray.push(val);
}
});
console.log(newArray);
我希望这会有用。
答案 1 :(得分:2)
首先,我将对数组进行展平,以便每个元素可以处于同一级别,然后对其进行过滤。
它看起来像这样:
var activeProducts = myArr.flat().filter(item => item.active);
此解决方案简短有效,但请注意Array.prototype.flat方法尚未supported on all browsers,但我确定您可以找到一个polyfill。