js中如何取得数组中相同元素的下标

如题所述

function searchKeys(needle, haystack)
{
    var result = [];
    for (i in haystack)
{
if (haystack[i] == needle)
{
    result.push(i);
}
}
    return result;
}

var array = [1,2,1,3,1,4,1,5,1,1];
var val = 1;
var result = searchKeys(val, array);
alert(result);

这里写了一个方法,第一个参数是所要求果的值,第二个参数是对应的数组,函数返回的结果就是在这个数组中有相同元素的坐标。

上面是已知元素进行查找,下面这个是对数组所有元素进行查找

var arr = ['1', '2', '3', '4', '5', '6', '6', '7', '8', '1', '1', '1'];
var list = [];
for (var i = 0; i < arr.length; i++)
{
var hasRead = false;
for (var k = 0; k < list.length; k++)
{
if (i == list[k])
{
hasRead = true;
}
}
if (hasRead) { break;}
var _index = i, haveSame = false;
for (var j = i + 1; j < arr.length; j++)
{
if (arr[i] ==arr[j])
{
list.push(j);
_index += "," + j;
haveSame = true;
}
}
if (haveSame)
{
alert("数组中值为"+arr[i]+"相同元素的下标为"+_index);
}
}

这个是对所有的数组元素遍历,查出所有的相同的元素以及下标

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-25
同学,数组中如果有相同的元素,后面的会把前面的覆盖掉哦,不可能出现完全相同的元素的。
第2个回答  2012-06-27
function searchKeys(needle, haystack)
{
var result = [];
for (i in haystack)
{
if (haystack[i] == needle)
{
result.push(i);
}
}
return result;
}

var array = [1,2,1,3,1,4,1,5,1,1];
var val = 1;
var result = searchKeys(val, array);
alert(result);本回答被提问者和网友采纳
第3个回答  2019-07-30
var arr = ['1', '1', '3', '4', '5', '6', '6', '7', '8', '8', '1', '1','8'];
var list = [];
for (var i = 0; i < arr.length; i++)
{
var hasRead = false;
for (var k = 0; k < list.length; k++)
{
if (i == list[k])
{
hasRead = true;
}
}
if (hasRead) { continue;}
var _index = i, haveSame = false;
for (var j = i + 1; j < arr.length; j++)
{
if (arr[i] ==arr[j])
{
list.push(j);
_index += "," + j;
haveSame = true;
}
}
if (haveSame)
{
console.log("数组中值为"+arr[i]+"相同元素的下标为"+_index);
}
}