【发布时间】:2023-01-10 14:35:33
【问题描述】:
我一直在网上冲浪,试图找到一种有效的方法来做到这一点,但一无所获。我有一组看起来像这样的对象:
array[i].id = some number;
array[i].name = some name;
我想做的是找到id等于的对象的INDEXES,例如0,1,2,3或4之一。 我想我可以做类似的事情:
var indexes = [];
for(i=0; i<array.length; i++) {
(array[i].id === 0) ? { indexes[0] = i }
(array[i].id === 1) ? { indexes[1] = i }
(array[i].id === 2) ? { indexes[2] = i }
(array[i].id === 3) ? { indexes[3] = i }
(array[i].id === 4) ? { indexes[4] = i }
}
虽然这可行,但它看起来非常昂贵且缓慢(更不用说丑陋了),尤其是在 array.length 可能很大的情况下。关于如何改善这一点的任何想法?我想过以某种方式使用 array.indexOf 但我不知道如何强制语法。这个
array.indexOf(this.id === 0);
例如,返回 undefined,因为它可能应该如此。
【问题讨论】:
-
如果你有一个普通的旧数组,你所能做的就是迭代。这就是数组,一堆按数组索引排序的对象。
-
今天刚刚看到这篇文章,对于所有后来者来说,ECMAScript 2015 中有一个新的数组方法
Array.prototype.findIndex()。接受的答案非常棒。 -
我是 ES6 语法的粉丝(如果需要对旧版浏览器的支持,请使用 polyfill)。 ES7+ES8 将是未来
-
仅供参考,如果您希望能够快速查找,那么您可能不应该使用数组,而应该使用字典(Id,对象)
标签: javascript arrays indexof