使用ES6过滤数组中的对象

3

如何使用ES6查找数组的长度:

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

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

console.log(results);

注意: 如果这是一个单独的数组列表,aValue.length将起作用。然而,由于这些是分配给属性的值。例如:a:apple,需要采用不同的方法。
要替换“aValue.length”以查找长度大于3的值,正确的代码是什么,使答案为apple、baloon和elephant?
2个回答

5
这将适合您的需求。
var results = x.filter(val => Object.keys(val).length > 3)
Object.keys()方法返回包含对象中所有键的数组。

这不是一个对象,而是一个数组。你有机会使用你的解决方案运行代码了吗? - thirdEye
这是一个对象数组。是的,这个解决方案可行,它获取了你的数组中每个对象的Object.keys()。你遇到了什么问题? - Christopher Messer

2

对象没有 length 属性。但是有一个小技巧可以获取对象的键数。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接