有一个数组A:
let arrA = [{
name: 'twitter',
active: true
}, {
name: 'medium',
active: false
},
{
name: 'platinum',
active: false
}
];
阵列B:
let arrB = [{
name: 'twitter',
active: false
}, {
name: 'medium',
active: false
}
];
我怎样才能得到一个如下所示的数组:
let newArr = [{
name: 'twitter',
active: true
}, {
name: 'medium',
active: false
},
{
name: 'platinum',
active: false
}
];
我需要active
中对象的newArr
属性等于or
和active
对象的arrA
属性之间的arrB
属性name
相同的地方。
arrA
和arrB
可以有不同的长度
答案 0 :(得分:2)
这是我的方法。使用地图
<form id='myform'>
<textarea id='mytext'></textarea>
</form>
希望有所帮助!
答案 1 :(得分:0)
var newArr = [];
newArr
,其中对象键和值在arrA
和arrB
之间进行比较。
let arrA = [
{
name: 'twitter',
active: true
},
{
name: 'medium',
active: false
}
];
let arrB = [
{
name: 'twitter',
active: false
},
{
name: 'medium',
active: false
}
];
let newArr = [];
for (var i = 0; i < arrA.length; i++){
newArr.push({
name: arrA[i].name,
active: arrA[i].active || arrB[i].active,
});
}
console.log(newArr);
答案 2 :(得分:0)
这是一个用于此目的的功能:
function MyFunction(firstArray, secondArray) {
firstArray = firstArray.map(e => {
if (secondArray.some(_e => _e.name === e.name))
e.active = e.active || secondArray.filter(f => f.name == e.name)[0].active;
return e;
});
return [...newA, ...arrB.filter(e => !arrA.some(s => s.name === e.name))];
}