如何获取javascript中具有多个子元素的数组元素的索引

时间:2014-08-09 23:07:09

标签: javascript arrays indexing

我在javascript中工作,我想在数组中找到元素的索引。

var task = [{taskno:'1',todo:'cooking'},{taskno:'2',todo:'play'}];

现在我想找到任务的索引,其中有todo作为烹饪,我不知道它的任务没有....是否有任何内置功能?

我已经尝试过这段代码,但它不起作用:

  var index = task.indexOf(todo:'cooking');

现在我正在使用for循环还有其他方法吗?

提前致谢:)

2 个答案:

答案 0 :(得分:1)

indexOf将为您提供数组中对象的索引,但您必须已经拥有对该对象的引用。

e.g。

var o1 = { val: 'o1' },
    o2 = { val: 'o2' };

[o2, o1].indexOf(o1); //1

如果您没有对象的引用,则必须创建自己的搜索算法。

var tasks = [{taskno:'1',todo:'cooking'}, {taskno:'2',todo:'play'}];

var index = indexOfFirstMatch(tasks, function (task) {
    return task.todo === 'cooking';
});

console.log(index); //0

function indexOfFirstMatch(arr, matcher) {
    var i = 0, len = arr.length;

    for (; i < len; i++) {
        if (matcher(arr[i])) return i;
    }

    return -1;
}

答案 1 :(得分:0)

如果您需要实际对象,而不仅仅是它的索引。您可以使用underscore库及其findWhere功能:

var task_wanted = _findWhere(task, {todo: "Cooking"});

如果您确实需要索引,请使用task_wanted以indexOf()搜索数组。