我的数组看起来像这样:
var someArray =
[
{ id: 'someID', name: 'someName', title: 'someTitle' },
{ id: 'anotherID', name: 'anotherName', title: 'anotherTitle' },
{ id: 'otherID', name: 'otherName', title: 'otherTitle' }
];
我希望得到一个对象的索引引用,该对象是id === 'anotherID'
someArray
我知道我可以使用$.grep()
返回一个对象:
var resultArray = $.grep(columns, function(e){return e.id === 'anotherID'});
resultArray
将返回与匿名函数的条件匹配的对象数组,但它不会在someArray
我正在寻找JavaScript / Jquery解决方案。 谢谢。
答案 0 :(得分:1)
一个简单的for
:
var elementIndex = false;
for ( var index = 0, length = someArray.length; index < length; index++ ) {
if ( someArray[index].id === 'anotherID' ) {
elementIndex = index;
break;
}
}
if ( elementIndex !== false ) {
console.log(elementIndex);
}
答案 1 :(得分:1)
最简单的方法是编写自己的函数(除非您可以访问内置的indexOf
方法并且它适用于您:
var indexOf = function(array, predicate) {
for(var i = 0; i < array.length; i++) {
if(predicate(array[i])) {
return i;
}
}
return -1;
}
然后你可以这样称呼:
var index = indexOf(someArray, function(e){ return e.id === 'anotherID'; });
答案 2 :(得分:1)
使用reduce的一个衬垫:
someArray.reduce(function(p,c,i){return c.id=='anotherID'?i:p},-1);
答案 3 :(得分:0)
使用jQuery的$.each
:
var posIndex = '';
$.each(someArray, function(i){
if(someArray[i].id === 'anotherID'){
posIndex = i;
return false; /*Stop iterating once found. Tip from Felix Kling*/
}
});
请参阅example fiddle (upper code part)。
如您所见,使用jQuery比普通的JS for
更容易。
此答案认为每个 id
实际上是标识符(又名唯一),否则posIndex
将返回最后一个具有anotherID
。
<强>更新强>
添加了return false;
的“Felix Kling”提示。现在它将仅返回第一场比赛。如果有多个ID具有相同的值,请使用以下内容。谢谢Felix。
如果您认为可能有多个相等的ID,我建议posIndex
成为一个数组然后再读取数组。例如:
var posIndexArray = [];
$.each(someOtherArray, function (i) {
if (someOtherArray[i].id === 'anotherID') {
posIndexArray.push(i);
}
});
posIndexArray
将是一个以逗号分隔的索引列表,然后您可以使用$.each
对索引执行任何操作。
答案 4 :(得分:0)
如果您愿意,可以使用普通的JavaScript或jQuery轻松实现这一目标!
le vanilla
function getById(id, objects) {
for (var i = 0, length = objects.length; i < length; i++) {
if (objects[i].id === id) {
return i;
}
}
return -1;
}
jQueryyy
function getById(id, objects) {
var index = -1;
$.each(objects, function(i) {
if (this.id === id) {
index = i;
return false;
}
});
return index;
}
从那时起,你可以调用你的小方便的帮助函数并检查你是否有一个好的索引。
var index = getById('otherId', someArray);
if (~index) {
doSomethingAwesome(someArray[index]);
}