数组推送返回true或false而不是推送的对象

时间:2019-07-23 07:50:13

标签: javascript arrays object

我有一系列具有不同属性的产品,包括产品数量。我需要在新阵列中推送产品数量少于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,但这不是预期的输出。

3 个答案:

答案 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);