如何从多对象数组中根据ID值获取对应元素的索引
根据对象ID获取数组元素索引的解决方案
嘿,我来帮你搞定这两个问题——先从通用的实现思路聊起,再落到你给出的具体场景里。
一、通用思路:从对象数组中按ID取索引
有两种常用的方式,看你的环境需求选就行:
- 用
findIndex()(推荐ES6+环境):这是数组自带的方法,会遍历数组,返回第一个满足条件的元素索引,找不到就返回-1。写法非常简洁,逻辑一目了然。 - 手动遍历(兼容旧环境):如果要支持ES6之前的浏览器,可以用普通
for循环或者forEach遍历数组,逐个比对ID,匹配时记录索引。
二、你的具体场景实现
咱们一步步来写代码,完全贴合你的需求:
1. 初始化数组和对象
先创建你定义的对象,再初始化数组并添加元素:
// 定义初始对象 var objRecord = {"ID":1,"Name":"Precious","PhoneNo":"08051170615","Address":"London"}; // 初始化数组并存入初始对象 var arrData = [objRecord]; // push添加ID为2的对象 arrData.push({"ID":2,"Name":"Another Name","PhoneNo":"080xxxxxxx","Address":"Somewhere"});
注意:我把PhoneNo改成了字符串,因为数字开头的0在JS里会被当作八进制数处理,可能丢失前导0,用字符串更稳妥~
2. 实现GetElementIndex函数
这里用findIndex()来实现,简洁高效:
function GetElementIndex(id) { // 遍历arrData,找到第一个ID匹配的元素索引 return arrData.findIndex(item => item.ID === id); } // 测试调用:获取ID为2的元素索引 console.log(GetElementIndex(2)); // 输出:1
如果需要兼容旧环境,也可以用普通for循环实现:
function GetElementIndex(id) { for (var i = 0; i < arrData.length; i++) { if (arrData[i].ID === id) { return i; } } // 找不到匹配的ID时返回-1 return -1; }
这样调用GetElementIndex(2)就会返回1,正好是你添加的第二个元素的索引(数组索引从0开始哦)。
内容的提问来源于stack exchange,提问作者donprecious iyeritufu
相关产品推荐
相关产品推荐

