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

JS遍历两个const数组取ID传参返回undefined如何解决

问题根因

for (let data of [data1, data4])的写法会让你遍历到的是data1、data4两个数组本身,而非数组内部存储的对象元素。数组本身没有ID属性,读取data.ID自然返回undefined。
另外你贴的示例代码存在语法错误:JavaScript对象内部定义属性要使用冒号:分隔键和值,不能用等号=,正确的定义格式参考:

const data1 = [{data2: ..., data3: ..., ID: 1}]
const data4 = [{data5: ..., data6: ..., ID: 2}]
可行修复方案

根据你的需求选对应写法即可:

  • 如果需要遍历两个数组里的所有元素,逐个取ID传入getdata,直接把两个数组合并为一维数组再遍历就行:
// 用展开运算符合并两个数组的所有元素
for (const item of [...data1, ...data4]) {
  getdata(item.ID).done(function() {
    // 写你的业务逻辑
  })
}
  • 如果你不想合并数组,也可以写两层循环,先遍历数组集合,再遍历每个数组内的元素:
for (const currentArr of [data1, data4]) {
  for (const item of currentArr) {
    getdata(item.ID).done(function() {
      // 写你的业务逻辑
    })
  }
}
  • 如果你的需求是取出两个数组中ID值相等的元素再传入函数,就需要做ID匹配:
for (const item1 of data1) {
  for (const item4 of data4) {
    if (item1.ID === item4.ID) {
      getdata(item1.ID).done(function() {
        // 写匹配到相同ID后的业务逻辑
      })
    }
  }
}

单个数组遍历时逻辑正常,是因为你直接遍历数组就能拿到内部的对象元素;把两个数组包在新数组里遍历,相当于多嵌套了一层数组结构,拿到的是外层的数组对象,自然读不到内部元素的属性。


内容的提问来源于stack exchange,提问作者Francis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:39:53