You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多对象数组中根据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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:16:17