代码之家  ›  专栏  ›  技术社区  ›  panthro

在数组中查找对象?

  •  1
  • panthro  · 技术社区  · 6 年前

    我有一个数组:

    ['test', 'test2', {a: a, b: b}, 'test3']
    

    我怎样才能只得到第一个物体?

    我需要循环并进行类型测试吗?还是有更有效的方法?

    1 回复  |  直到 6 年前
        1
  •  8
  •   T.J. Crowder    6 年前

    我需要循环并进行类型测试吗?

    是的,至少, 某物 做。

    例如,要查找数组中的第一个对象,可以使用 find :

    const first = theArray.find(e => typeof e === "object");
    

    或者如果你不想 null 匹配:

    const first = theArray.find(e => e && typeof e === "object");
    

    还是有更有效的方法?

    循环将足够有效。如果你不喜欢打电话给 找到 的回拨 真的,真的,真的 快),你可以用一个无聊的老 for 循环:

    let first;
    for (let i = 0, l = theArray.length; i < l; ++i) {
        const e = theArray[i];
        if (typeof e === "object") { // Or, again: `e && typeof e === "object"`
            first = e;
            break;
        }
    }
    

    …但它使你能真正感受到的性能差异的几率非常小。