如何修改数组indexOfObj函数,从末尾开始查找匹配对象的索引
修改数组对象查找函数,从末尾匹配最后一项
没问题!要实现从数组末尾开始查找最后一个匹配的对象索引,只需要把遍历方向反过来就行,我帮你调整了代码:
Array.prototype.lastIndexOfObj = function(key, value) { // 从数组最后一位开始向前遍历 for (var i = this.length - 1; i >= 0; i--) { if (this[i][key] === value) { return i; // 找到匹配项直接返回当前索引 } } return -1; // 没找到返回-1 };
几点说明:
- 我把函数名改成了
lastIndexOfObj,这样和原生的lastIndexOf命名逻辑保持一致,更直观;如果还是想用你原来的命名,直接改回indexOfObj就行。 - 注意你原代码里函数定义是
indexOfObj,但调用写的是indexOfObject,这里要统一命名,避免调用报错。 - 遍历逻辑改成从数组最后一个元素(
this.length - 1)开始,逐个向前检查,找到第一个匹配的就返回,这样得到的就是最后一个符合条件的对象索引。
使用示例:
// 示例数组 const myArr = [ { id: 1, name: "Alice" }, { id: 2, name: "Bob" }, { id: 3, name: "Alice" }, { id: 4, name: "Charlie" } ]; // 查找name为"Alice"的最后一个对象索引 console.log(myArr.lastIndexOfObj("name", "Alice")); // 输出:2
内容的提问来源于stack exchange,提问作者Tariq Sherriff
相关产品推荐
相关产品推荐

