我有两个对象数组。
const array1=[
{type:'A',name:'word1'},
{type:'B',name:'word2'},
{type:'C',name:'word3'},
{type:'D',name:'word4'},
{type:'E',name:'word5'},
{type:'F',name:'word6'},
]
const array2=[
{id:1,text:'text1',type:A},
{id:2,text:'text2',type:B},
{id:3,text:'text3',type:C},
{id:4,text:'text4',type:D},
{id:5,text:'text5',type:D},
{id:6,text:'text6',type:E},
{id:7,text:'text7',type:E},
{id:8,text:'text8',type:B},
]
有些类型在array1中,但不在数组2中。我想通过以下方式显示newArray:-
const newArray=[
{id:1,text:'text1',type:A,name:'word1'},
{id:2,text:'text2',type:B,name:'word2'},
{id:3,text:'text3',type:C,name:'word3'},
{id:4,text:'text4',type:D,name:'word4'},
{id:5,text:'text5',type:D,name:'word4'},
{id:6,text:'text6',type:E,name:'word5'},
{id:7,text:'text7',type:E,name:'word5'},
{id:8,text:'text8',type:B,name:'word2'},
]
我已经尝试过:-
var newArray=[],
newArray=array1.map(x => Object.assign(x, array2.filter(y => y.type == x.type)));
但是我没有获得所需格式的输出。
尝试:
最有效的方法是从Array1中创建对象Map,以便您可以在恒定时间内搜索。发布您可以映射到数组并使用传播语法返回更新的对象]
您必须映射到const array1=[
{type:'A',name:'word1'},
{type:'B',name:'word2'},
{type:'C',name:'word3'},
{type:'D',name:'word4'},
{type:'E',name:'word5'},
{type:'F',name:'word6'},
]
const array2=[
{id:1,text:'text1',type:'A'},
{id:2,text:'text2',type:'B'},
{id:3,text:'text3',type:'C'},
{id:4,text:'text4',type:'D'},
{id:5,text:'text5',type:'D'},
{id:6,text:'text6',type:'E'},
{id:7,text:'text7',type:'E'},
{id:8,text:'text8',type:'B'},
]
const a = array2.map(arr => {
const {name} = array1.filter(iArr => iArr.type === arr.type)[0];
return {...arr, name}
})
上以给出一个将两个数组连接在一起的新数组,如下所示: