使用ES6过滤带有数组的对象

时间:2017-08-29 18:32:35

标签: javascript arrays object filter ecmascript-6

如何使用ES6查找ARRAY的长度:

var x = [{a:"apple", b:"Baloon"},{a:"elephant", b:"dog"}];

var results = x.filter(aValue => aValue.length > 3);

console.log(results);

注意: 如果这是单独的数组列表,aValue.length就可以工作了。但是,因为这些是分配给属性的值。防爆; a:苹果,需要差异方法。

我需要更换" aValue.length" 以找到大于3的值的长度的正确代码,所以答案是什么会是苹果,气球和大象吗?

2 个答案:

答案 0 :(得分:5)

这将满足您的需求

var results = x.filter(val => Object.keys(val).length > 3)

Object.keys()方法返回对象中包含的所有键的数组。

答案 1 :(得分:2)

对象没有长度属性。但是有一个小技巧可以让你拥有一个对象的键数。

有两种方法可以使用。 Object.getOwnPropertyNames(val).length Object.keys(val).length

然而,两者之间存在一点差异。 Object.getOwnPropertyNames(a)返回对象a的所有属性。 Object.keys(a)返回所有可枚举的自有属性。

相关问题