要查找数组中元素的索引,您可以使用 indexOf
(对于第一次出现)和lastIndexOf
(对于最后一次出现)方法。
如何在对象数组中找到索引?例如,必要对象第一次出现时的索引?
例如,有一个对象数组:
let inputArr = [{name:'bruce', age:40, city:'gotham'},
{name:'barry', age:25, city:'fallville'},
{name:'diana', age:30, city:'themyscira'}
];
如何获取索引,属性中的name
值 在哪里barry
?如果你这样写:
inputArr.indexOf('barry');
将输出-1
,期望值为1
。可以循环遍历所有值吗?也许有更简单的方法?
选项:
使用findIndex,它将一个函数作为参数
callback
,您可以在其中指定条件。它可用于搜索非原始类型(包括对象),以及您可以/需要在哪里设置比值更复杂的条件。如果未找到该元素,则返回
-1
。顺便说一下,这种方法的优点是:找到所需的元素后,对数组的迭代就会停止。也就是说,如果数组有 100 个元素并且找到索引 3,则剩余的 97 次迭代不会发生。
带有映射的数组变体。想法是什么:
map
,为数组中的指定属性选择所需的值indexOf
例子:
缺点:
map
创建一个包含所需元素的整个数组property
。因此,例如,如果数组有 1000 个元素,则会影响性能。加:相比之下
findIndex
-map
支持更多的浏览器,tk。这是处理数组的旧方法对于不能的非现代浏览器
findIndex
,例如IE8 (9,10,11),您必须执行循环。一个注意事项:你需要做的不是循环for...in
,而是常规的循环,for
这样在任何时候发现一个元素时,你可以立即中断循环,让它不会白跑。如果您对库感兴趣,那么在underscore.js 库中,有一个方法
_.findIndex
您可以指定多个条件(与使用时相同
findIndex
),例如: