获取与条件匹配的对象的第一个属性

时间:2016-06-01 00:53:34

标签: javascript object

所以我有这样的结构:

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的所有属性。

1 个答案:

答案 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”元素。

相关问题