如何添加条件以比较两个数组并更改匹配数组的值
How to add condition to compare two array and change value of match array
我想比较两个数组,因为我想更改匹配 ID 的值。
请参考下面的数组和结果。
let array1 =[
{
"id": 1,
"value": false
},
{
"id": 2,
"value": false
},
{
"id": 3,
"value": true
},
{
"id": 4,
"value": false
}
]
let array2 = [
{
"id": 1
},
{
"id": 4
}
]
我想使用下划线库来比较这个数组 return 比较数组值结果如下面的数组
result = [
{
"id": 1,
"value": true
},
{
"id": 2,
"value": false
},
{
"id": 3,
"value": true
},
{
"id": 4,
"value": true
}
]
你可以试试这个:
array1.forEach(item => {
item.value = item.value || array2.some(item2 => item2.id === item.id)
})
您可以使用 Array.prototype.map():
const array1 =[{"id": 1,"value": false},{"id": 2,"value": false},{"id": 3,"value": true},{"id": 4,"value": false}]
const array2 = [{"id": 1},{"id": 4}]
const result = array1.map(({id, value}) => ({
id,
value: value || array2.some(item => item.id === id)
}))
console.log(result)
您可以使用 lodash.map
和 lodash.some
来检查对象并更新 value
。
let array1 =[ { "id": 1, "value": false }, { "id": 2, "value": false }, { "id": 3, "value": true }, { "id": 4, "value": false } ],
array2 = [ { "id": 1 }, { "id": 4 } ],
result = _.map(array1, o => ({...o, value : _.some(array2, ({id}) => id === o.id) || o.value}));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
另一个使用地图的解决方案
let array1 =[
{
"id": 1,
"value": false
},
{
"id": 2,
"value": false
},
{
"id": 3,
"value": true
},
{
"id": 4,
"value": false
}
]
let array2 = [
{
"id": 1
},
{
"id": 4
}
]
const resultArr = array1.map((item) => {
if (array2.findIndex((item2) => {return item2.id == item.id}) !== - 1) {
item.value = true;
}
return item;
})
console.log(resultArr);
我想比较两个数组,因为我想更改匹配 ID 的值。
请参考下面的数组和结果。
let array1 =[
{
"id": 1,
"value": false
},
{
"id": 2,
"value": false
},
{
"id": 3,
"value": true
},
{
"id": 4,
"value": false
}
]
let array2 = [
{
"id": 1
},
{
"id": 4
}
]
我想使用下划线库来比较这个数组 return 比较数组值结果如下面的数组
result = [
{
"id": 1,
"value": true
},
{
"id": 2,
"value": false
},
{
"id": 3,
"value": true
},
{
"id": 4,
"value": true
}
]
你可以试试这个:
array1.forEach(item => {
item.value = item.value || array2.some(item2 => item2.id === item.id)
})
您可以使用 Array.prototype.map():
const array1 =[{"id": 1,"value": false},{"id": 2,"value": false},{"id": 3,"value": true},{"id": 4,"value": false}]
const array2 = [{"id": 1},{"id": 4}]
const result = array1.map(({id, value}) => ({
id,
value: value || array2.some(item => item.id === id)
}))
console.log(result)
您可以使用 lodash.map
和 lodash.some
来检查对象并更新 value
。
let array1 =[ { "id": 1, "value": false }, { "id": 2, "value": false }, { "id": 3, "value": true }, { "id": 4, "value": false } ],
array2 = [ { "id": 1 }, { "id": 4 } ],
result = _.map(array1, o => ({...o, value : _.some(array2, ({id}) => id === o.id) || o.value}));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
另一个使用地图的解决方案
let array1 =[
{
"id": 1,
"value": false
},
{
"id": 2,
"value": false
},
{
"id": 3,
"value": true
},
{
"id": 4,
"value": false
}
]
let array2 = [
{
"id": 1
},
{
"id": 4
}
]
const resultArr = array1.map((item) => {
if (array2.findIndex((item2) => {return item2.id == item.id}) !== - 1) {
item.value = true;
}
return item;
})
console.log(resultArr);