如何为findIndex()方法动态设置ID查询条件?
你的写法完全可行!
其实你写的returnIndex函数逻辑是完全正确的,内部的回调函数可以正常访问到外部函数的targetID参数(这是JavaScript闭包的特性),完全能实现根据目标ID查找数组元素索引的需求。
我给你补全完整的代码示例,方便你理解调用和运行逻辑:
// 先定义一个示例数组 const userList = [ { id: 101, name: "john" }, { id: 102, name: "lisa" }, { id: 103, name: "mike" } ]; function returnIndex(targetID) { // 这里的targetID就是你传入的变量,能被回调函数正常读取 const index = userList.findIndex(function(x) { return x.id == targetID; }); // 一定要记得返回索引值,不然调用函数拿不到结果 return index; } // 调用方式非常简单,直接传入目标ID即可 const johnIndex = returnIndex(101); console.log(johnIndex); // 输出:0 const mikeIndex = returnIndex(103); console.log(mikeIndex); // 输出:2 // 如果找不到匹配的ID,findIndex会返回-1 const unknownIndex = returnIndex(999); console.log(unknownIndex); // 输出:-1
另外,你也可以用更简洁的箭头函数改写回调,代码会更清爽:
function returnIndex(targetID) { return userList.findIndex(x => x.id === targetID); }
几个小提示:
- 推荐用严格相等
===代替==,避免隐式类型转换带来的意外问题 - 函数里必须
return索引值,否则调用后会得到undefined - 若数组中无匹配元素,
findIndex会返回-1,调用时可以根据这个值判断是否找到目标
内容的提问来源于stack exchange,提问作者bejewelled
相关产品推荐
相关产品推荐

