根据对象字段值查找javascript"对象数组"的索引

Ask*_*mov 1 javascript arrays jquery angularjs

我有一个Javascript对象数组,我想找到数组元素(对象)的索引,其中特定对象的字段与我的搜索条件匹配.

也就是说,数组看起来像

  [{id:1, saved:0, name: "name1"}, {id:26, saved:0, name: "name2"},
    {id:3, saved:0, name: "name3"}, {id:15, saved:0, name: "name4"}]
Run Code Online (Sandbox Code Playgroud)

我想找到元素的id字段等于的元素的索引,比方说,15.我正在使用angular和jquery.

ade*_*neo 7

你必须迭代,这是一个非常简单的例子

var index = null;

for (var i=0; i<array.length; i++) {
    if ( array[i].id == 15 ) {
        index = i;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您只想返回可以执行的对象,那么这将获得索引

var obj = array.filter(function(obj) {
    return obj.id == 15;
}).shift();
Run Code Online (Sandbox Code Playgroud)


Nin*_*olz 6

使用 ES6,您可以使用Array#findIndex

findIndex()方法返回数组中满足所提供的测试函数的第一个元素的索引。否则-1返回。

var array = [{ id: 1, saved: 0, name: "name1" }, { id: 26, saved: 0, name: "name2" }, { id: 3, saved: 0, name: "name3" }, { id: 15, saved: 0, name: "name4" }],
    index = array.findIndex(({ id }) => id === 15);

console.log(index);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)