{
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)
}
}
这个是对所有的数组元素遍历,查出所有的相同的元素以及下标
直接给一个新的数组里面,利用es6的延展运算符
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。item是当前元素的值,index是当前元素的索引值。indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。利用indexOf() 查询到数组的下标,看是否等于当前的下标,相等的话就返回,否则不返回值。
5、借助新数组 通过 indexOf 方法判断当前元素在数组中的索引,如果与循环的下标相等则添加到新数组中
6、利用双重for循环
7、利用includes实现数组去重
以上就是比较常用的七种方法了,有不懂的留言吧。