所以我有这样的结构:
Foo: {
A: Array[0],
B: Array[0],
C: Array[1]
}
其中[X]
是数组的长度,但Foo
是一个对象,而不是一个数组,因此我不能在其上使用数组方法。
如何获得具有length > 0
的第一个元素(本例中的字母)?
for (let letter in Foo) {
if (letter.length > 0) {
let match = letter;
}
}
我试过这样的东西(这是简化版),但它只返回Foo
的所有属性。
答案 0 :(得分:1)
我很高兴您使用的是ES6。在这种情况下,您可以使用Object.keys
获取所有对象键的数组,并使用Array.prototype.find
查找具有特定属性的第一个元素:
var obj = {
a: [],
b: [],
c: [
2,
3
],
d: [],
e: [
1
]
};
Object.keys(obj).find(a => obj[a].length > 0); // The letter "c" which contains the first non-empty array.
obj[Object.keys(obj).find(a => obj[a].length > 0)]; // Array [2, 3] itself
请注意,跨实现的对象中没有一致的“first”元素。