我在javascript中工作,我想在数组中找到元素的索引。
var task = [{taskno:'1',todo:'cooking'},{taskno:'2',todo:'play'}];
现在我想找到任务的索引,其中有todo作为烹饪,我不知道它的任务没有....是否有任何内置功能?
我已经尝试过这段代码,但它不起作用:
var index = task.indexOf(todo:'cooking');
现在我正在使用for循环还有其他方法吗?
提前致谢:)
答案 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()搜索数组。