假设有两个对象数组:
let arr1 = [
{name:'a',val:11},
{name:'b',val:21},
{name:'c',val:31},
{name:'e',val:51}
]
let arr2 = [
{name:'a',val:12},
{name:'b',val:22},
{name:'d',val:42},
]
- 将两个数组的长度进行统一
- name没有重合的数据,生成同等的name,val设置为''
- name有重合的数据不管
- 顺序统一
最终的结果:
arr1 = [
{name:'a',val:11},
{name:'b',val:21},
{name:'c',val:31},
{name:'e',val:51}
{name:'d',val:''},
]
arr2 = [
{name:'a',val:12},
{name:'b',val:22},
{name:'c',val:''},
{name:'e',val:''}
{name:'d',val:42},
]
如果想保持原有的对象引用,map 那里改一下就好了
如果想少循环一次 names,可以用 reduce
如果 arr1 和 arr2 数据量比较大,find 会比较耗时,可以提前生成查找表: