2017-07-27 69 views
0

我是javascript的新手。javascript findIndex回调参数

我在试图找到一个数组中的特定元素的索引。我读了一下,我可以使用findIndex循环访问一个数组。但似乎findIndex只接受三个参数:元素,索引和数组。如果我想更改用于比较的对象,该怎么办?

例如,我想要找到字符串'b'的阵列['a','b','c']指数,

var position = ['a','b','c'].findIndex(function(element, index, array){return element==='b'}) 

但如何通过'b'因为我可以换到回调函数的参数

感谢

+1

“findIndex只接受三个参数” 不是真的。 'findIndex'接受2个参数:回调和可选的上下文。这是一个用3个参数调用的回调函数。 –

回答

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函数结合自定义回调可用于更复杂的搜索,例如,在处理复杂的结构化对象时。

3

indexOf功能如何?您只需传递一个参数,即搜索元素。

let arr = ['a','b','c']; 
 

 
console.log(arr.indexOf('b'));

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>