我有一系列具有不同属性的产品,包括产品数量。我需要在新阵列中推送产品数量少于5的产品。
我使用了filter和push函数,以便将所需的元素推送到新数组中。
products =具有元素的数组 lowStockProucts =新数组
var lowStockProducts = [];
products
.filter((el)=>{
lowStockProducts.push(el.productQuantity < 5);
return lowStockProducts
})
console.log(lowStockProducts);
期望新数组包含productQuantity小于5的对象,而输出为“ [true,false,true,false,false]”。
顺序正确,第一和第三元素的数量确实少于5,但这不是预期的输出。
答案 0 :(得分:1)
您推送条件的值,但是您需要通过遵守检查来获取过滤结果。
var lowStockProducts = products.filter(el => el.productQuantity < 5);
答案 1 :(得分:1)
.push(el.productQuantity < 5)
将推一个布尔值。您需要改用return
布尔值,才能使.filter
测试正常工作:
const lowStockProducts = products.filter(el => el.productQuantity < 5);
答案 2 :(得分:0)
Array.prototype.filter()返回以下消息-
具有通过测试的元素的新数组。如果没有元素通过 测试,将返回一个空数组。
您不需要新的单独数组来存储结果。我已经演示了您希望做的事情。
lowStockProucts = new Array()
let products = [{
"productQuantity": 2,
"name": "A"
}, {
"productQuantity": 21,
"name": "Ac"
}]
var lowStockProducts = products
.filter((el) => {
return el.productQuantity < 5 // use condition like this
})
console.log(lowStockProducts);