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
相关产品推荐
相关产品推荐

