尝试过滤返回填充值的对象数组

时间:2018-02-28 14:37:19

标签: javascript

我试着过滤我的对象数组,所以我只得到具有填充属性的对象,但由于某种原因我得到了未定义。

这就是数组的样子

enter image description here

这是我的过滤功能

var newArray = $scope.informacoesNutricionais.propriedadesNutricionais.obrigatorias.filter(function (obj){ return !!obj.quantityContained});

2 个答案:

答案 0 :(得分:1)

您正在检查quantityContained是否包含非虚假的内容。

首先,使用布尔运算符执行此操作并不是最佳方法,因为如果quantityContained0,则仍会返回false,并且不会返回该项。我猜是你想要发生什么,但它仍然滥用功能,不应该这样做。

不确定为什么你会得到未定义,因为我可以运行类似的东西:

var a = {arr:[{a:"a"}, {a:null}, {a:null}, {a:null}]}

a.arr.filter(function(obj){return !!obj.a})
[{…}]
    0: {a: "a"}
    length: 1
    __proto__: Array(0)

或更好:

a.arr.filter(function(obj){return obj.a !== null})

两者都返回相同的东西。

使用obj !== null,看看是否有效。

答案 1 :(得分:-1)

var newArray = $scope.informacoesNutricionais.propriedadesNutricionais.obrigatorias.filter(function (obj) {
    return obj.quantityContained != null;
});

请在下次添加代码段而不是图片,因为我们可以更方便地为您提供帮助。