问题遇到的现象和发生背景
封装了一个通用函数,用来处理服务端返回的数据, urls 和 list(模拟数据)。想通过比对 urls 和 list 的 id,将 urls 中 url 添加到 list 对应的对象中。外部调用函数通过 callback 取得处理后的 list。
但是实际输出发现,有部分返回的 list 数组对象中根本没有 url 字段,或者存在部分对象有 url 字段。urls 中的 id 是通过 list 请求返回的,所以两个数组中一定有相同的 id,urls 中的 url 如果没有值为 null。
想问造成这种结果的原因是什么?服务端返回的数据量可能比较大,会导致循环遍历还没有结束就直接返回原 list 值吗?
问题相关代码,请勿粘贴截图
let urls = [{id:3,url:'http://xxx'},{id:1,url:'http://xxx'},{id:2,url:'http://xxx'}]
let list = [{id:1,name:'张三'},{id:2,name:'李四'},{id:3,name:'王五'}]
urls.forEach(way => {
for (let item of list) {
if (way.id === item.id) {
item.url = way.url
break
}
}
})
callback(list)