如何找出数组中包含的项目的位置?
["a","b","c","d","e"].indexOf("c")
2
+1对OP的说明:请注意,并非所有实现都有此功能;如果不存在,请参阅马克·比尔斯的答案。 – 2010-02-07 15:14:00
使用Array的indexOf
方法。如果没有,请添加它(代码示例here或其他地方)。
如果你想找到它的名称属性的值,这样做:
for (var i = 0; i < this.length; i++) {
if(this[i].name == name) {
return i;
}
}
return -1;
不应该是'if(!Array.prototype.indexOf){'?我很确定'Array'(构造函数)从来没有'indexOf'。 – 2010-02-07 15:14:35
感谢您的链接。我不知道那件事。 – 2010-02-07 15:20:15
@ T.J。 Crowder:在Mozilla的实现中,我不确定为什么构造函数有原型成员...'Array.hasOwnProperty('indexOf')== true;'...很奇怪你不觉得吗? – CMS 2010-02-07 15:26:26
你可以通过数组循环:
var array = ['item1', 'item2', 'item3'];
function findIndex(array, item) {
for (var i = 0; i < array.length; i++) {
if (array[i] === item) {
return i;
}
}
return -1;
}
alert(findIndex(array, 'item2'));
,或者使用比较器功能更复杂的类型:
var array = ['item1', 'item2', 'item3'];
function findIndex(array, comparer) {
for (var i = 0; i < array.length; i++) {
if (comparer(array[i])) {
return i;
}
}
return -1;
}
var index = findIndex(array, function(item) {
return item === 'item2' ;
});
这是什么类型的产品? – 2010-02-07 15:01:16
您的意思是,您知道数组中项目的值,并且您想知道数字键,或者您知道对象/关联数组中项目的键/属性名称,并且想知道该位置? – JAL 2010-02-07 15:03:59
缺少规格:如果元素不止一次出现在数组中,您希望发生什么?如果找不到该元素会发生什么? – 2010-02-07 15:04:20