我有一个数组。例如,[1,2,3,4,1,2,3,4]。如何在不改变阵列的情况下获得第一个“3”和第二个“3”的位置?我意识到这是一个类似的问题: Javascript - Get position of the element of the array,但我想找到两个“3”的位置。有谁知道如何做到这一点? (没有jQuery)
答案 0 :(得分:4)
这是一个通用函数,它返回所有在数组中指定的元素出现的位置:
Array.prototype.indicesOf = function(query) {
var indices = [];
var x = this.indexOf(query);
while(x != -1) {
indices.push(x);
x = this.indexOf(query, x + 1);
}
return indices;
};
var myArray = [1, 2, 3, 4, 1, 2, 3, 4];
var positions = myArray.indicesOf(3); // `positions` is now [2, 6]
var thingsTheySaid = ["Hello", "Hi", "Greetings", "Howdy",
"Good morning", "Hello"];
console.log(thingsTheySaid.indicesOf("Hello")); // Logs [0, 5]
答案 1 :(得分:2)
假设你有arr = [1, 2, 3, 4, 1, 2, 3, 4]
,你可以使用它:
a = arr.indexOf(3);
b = arr.indexOf(3,a+1);
答案 2 :(得分:2)
如果您 JUST 有两个要知道其位置的元素,可以使用
indexOf()
和lastIndexOf()
答案 3 :(得分:0)
<script>
var a = [1,2,3,4,1,2,3,4];
var pos = [];
for(var i=0;i<a.length;i ++){
if(a[i] === 3){
pos.push(i);
}else{
}
}
alert(pos[0]);
alert(pos[1]);
</script>
你可以循环遍历数组 无论何时将所有索引推送到另一个数组 它等于你要搜索的数字。
答案 4 :(得分:0)
或者,您可以:
var matchingIndexes = [];
var x = [1, 2, 3, 4, 1, 2, 3, 4];
x.forEach(function (element, index) {
if (element === 3) {
matchingIndexes.push(index);
}
});
关于输出:
console.log(matchingIndexes)
[2,6]
您当然可以将其作为函数包装或使用已经提到过的array.prototype。