给数组对象循环赋值不完全成功

问题遇到的现象和发生背景

封装了一个通用函数,用来处理服务端返回的数据, 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)

数组对象循环要用for in ,或者你直接双重foreach,不要用forof循环