在数组中查找对象?

pan*_*hro 1 javascript

我有一个数组:

['test', 'test2', {a: a, b: b}, 'test3']
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得第一个对象?

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

T.J*_*der 8

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

你做了,或者至少做了些什么.

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

const first = theArray.find(e => typeof e === "object");
Run Code Online (Sandbox Code Playgroud)

或者如果你不想null匹配:

const first = theArray.find(e => e && typeof e === "object");
Run Code Online (Sandbox Code Playgroud)

还是有更有效的方法?

循环将足够有效.如果你不喜欢find回调的调用(它们真的非常非常快),你可以使用一个无聊的旧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;
    }
}
Run Code Online (Sandbox Code Playgroud)

...但它实际上可以感知的性能差异的可能性非常小.