我试着过滤我的对象数组,所以我只得到具有填充属性的对象,但由于某种原因我得到了未定义。
这就是数组的样子
这是我的过滤功能
var newArray = $scope.informacoesNutricionais.propriedadesNutricionais.obrigatorias.filter(function (obj){ return !!obj.quantityContained});
答案 0 :(得分:1)
您正在检查quantityContained
是否包含非虚假的内容。
首先,使用布尔运算符执行此操作并不是最佳方法,因为如果quantityContained
为0
,则仍会返回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;
});
请在下次添加代码段而不是图片,因为我们可以更方便地为您提供帮助。