【发布时间】:2012-05-20 09:53:06
【问题描述】:
我一直在四处寻找一种有效的方法来做到这一点,但一无所获。我有一个看起来像这样的对象数组:
array[i].id = some number;
array[i].name = some name;
我想要做的是找到 id 等于的对象的索引,例如,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 语法的粉丝(如果需要对旧版浏览器的支持,请使用 polyfills)。 ES7+ES8 将是未来
-
仅供参考,如果您希望能够快速查找,那么您可能不应该使用数组,而是使用字典(Id,object)
标签: javascript arrays indexof