我是javascript的新手。
我试图找到数组中特定元素的索引。我读到我可以使用findIndex循环遍历数组。但似乎findIndex只接受三个参数:element,index和array。如果我想要更改用于比较的对象,该怎么办?
例如,我想查找数组'b'
中字符串['a','b','c']
的索引,
var position = ['a','b','c'].findIndex(function(element, index, array){return element==='b'})
但是如何将'b'
作为参数传递给我可以更改为回调函数
由于
答案 0 :(得分:3)
indexOf
功能怎么样?你只需传递一个参数,作为搜索元素。
let arr = ['a','b','c'];
console.log(arr.indexOf('b'));

答案 1 :(得分:1)
您可以在回调函数内部的外部上下文中定义所需字符:
var wantedChar = 'c';
var position = ['a','b','c'].findIndex(function(element, index, array){return element===wantedChar})
console.log(position);
通过这样做,你可以将所有这些包装在一个函数中:
var findPos = function(arr, char){
return arr.findIndex(function(element, index, array){return element===char});
}
console.log(findPos(['a','b','c'], 'c'));
注意:正如已经建议的那样,在比较字符串时使用indexOf
更有意义。 findIndex
功能与自定义回调相结合可用于更复杂的搜索,例如:处理复杂的结构化对象时。
答案 2 :(得分:0)
function getPosition(){
var position = ["a","b","c"];
var a = position.indexOf("b");
document.getElementById("demo").innerHTML = a;
}
<button onclick="getPosition()">button</button>
<p id="demo"></p>