首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取数组中符合条件的对象的索引

获取数组中符合条件的对象的索引
EN

Stack Overflow用户
提问于 2013-04-14 18:07:03
回答 12查看 598.2K关注 0票数 450

我有一个这样的数组:

代码语言:javascript
复制
[{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"},...]

如何在不遍历整个数组的情况下获得匹配条件的对象的索引?

例如,在给定prop2=="yutu"的情况下,我希望获得索引1

我看到过.indexOf(),但我认为它用于像["a1","a2",...]这样的简单数组。我还检查了$.grep(),但它返回的是对象,而不是索引。

EN

回答 12

Stack Overflow用户

发布于 2015-02-03 21:44:02

正如TJ·克劳德所说,每种方式都会有某种隐藏的迭代,有了lodash,这就变成了:

代码语言:javascript
复制
var index = _.findIndex(array, {prop2: 'yutu'})
票数 26
EN

Stack Overflow用户

发布于 2017-08-17 07:35:35

代码语言:javascript
复制
var CarId = 23;

//x.VehicleId property to match in the object array
var carIndex = CarsList.map(function (x) { return x.VehicleId; }).indexOf(CarId);

对于基本数组编号,您也可以这样做:

代码语言:javascript
复制
var numberList = [100,200,300,400,500];
var index = numberList.indexOf(200); // 1

如果在数组中找不到值,您将得到-1。

票数 18
EN

Stack Overflow用户

发布于 2015-04-09 01:50:24

代码语言:javascript
复制
var index;
yourArray.some(function (elem, i) {
    return elem.prop2 === 'yutu' ? (index = i, true) : false;
});

迭代数组的所有元素。如果条件不匹配,则返回索引和true或false。

重要的是显式返回值true (或布尔结果为true的值)。单次赋值是不够的,因为可能会有索引为0 (Boolean(0) === false),这不会导致错误,但会禁用迭代的中断。

编辑

上面的一个更简短的版本:

代码语言:javascript
复制
yourArray.some(function (elem, i) {
    return elem.prop2 === 'yutu' && ~(index = i);
});
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15997879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档