我有一个这样的数组:
[{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"},...]
如何在不遍历整个数组的情况下获得匹配条件的对象的索引?
例如,在给定prop2=="yutu"
的情况下,我希望获得索引1
。
我看到过.indexOf()
,但我认为它用于像["a1","a2",...]
这样的简单数组。我还检查了$.grep()
,但它返回的是对象,而不是索引。
发布于 2015-02-03 21:44:02
正如TJ·克劳德所说,每种方式都会有某种隐藏的迭代,有了lodash,这就变成了:
var index = _.findIndex(array, {prop2: 'yutu'})
发布于 2017-08-17 07:35:35
var CarId = 23;
//x.VehicleId property to match in the object array
var carIndex = CarsList.map(function (x) { return x.VehicleId; }).indexOf(CarId);
对于基本数组编号,您也可以这样做:
var numberList = [100,200,300,400,500];
var index = numberList.indexOf(200); // 1
如果在数组中找不到值,您将得到-1。
发布于 2015-04-09 01:50:24
var index;
yourArray.some(function (elem, i) {
return elem.prop2 === 'yutu' ? (index = i, true) : false;
});
迭代数组的所有元素。如果条件不匹配,则返回索引和true或false。
重要的是显式返回值true (或布尔结果为true的值)。单次赋值是不够的,因为可能会有索引为0 (Boolean(0) === false),这不会导致错误,但会禁用迭代的中断。
编辑
上面的一个更简短的版本:
yourArray.some(function (elem, i) {
return elem.prop2 === 'yutu' && ~(index = i);
});
https://stackoverflow.com/questions/15997879
复制相似问题