我有两个对象数组,分别为name
value
和id
数组A
ArrayA: [{
name: ,
value: ,
key:
},
];
我还有另一个对象数组,但属性名称不同
ArrayB: [{
user: “userA” ,
email: “emailA”,
key:1:
},
{
user: “userB” ,
email: “emailB”,
key:
},
];
现在我想要That ArrayA
将具有ArrayB中的值。我的意思是用户=>名称和电子邮件=>值
ArrayA应该具有以下条目
ArrayA: [{
name: “userA” ,
value: “emailA”,
key: 1
},
name: “userB” ,
value: “emailB”,
key: 1
]
我尝试使用map
,但没有成功,不知道我在这里缺少什么吗?
ArrayA = ArrayB.map(((item: { name: string; value: string }) => (item.user, item.email))
我可以使用循环,有更好的方法吗?
我应该使用lodash吗?
您可以通过保持object
重命名键。像这样的东西:
var obj={ user:'name', email:'value', key:'key' };
var arrayA=[];
var arrayB= [{ user: 'userA' , email: 'emailA', key:'1' }, { user: 'userB' , email: 'emailB', key:'' }];
arrayA = arrayB.map(k=>Object.fromEntries(Object.entries(k).map(([key,v])=>[obj[key],v])));
console.log(arrayA)
最好使用传播算子和映射:
const result = [...ArrayA, ...ArrayB.map(({ key, user, email }) => ({ key, name: user, value: email }))]
您必须使用Array concat() Method。
let ArrayA = [
{
name: 'name1',
value: '22',
key: 5,
},
];
let ArrayB = [
{
name: 'name2',
value: '33',
key: 6,
},
];
let ArrayC = ArrayA.concat(ArrayB);
let ArrayD = ArrayA.concat([{ name: 'name2' }, { value: '33' }, { key: 6 }]);
console.log(ArrayC);
console.log(ArrayA);
console.log(ArrayD); //ref sreenshot
您不能像指定的那样直接在数组中包含元素,它们需要与对象具有键值关系