已知数组arr。
第一步:过滤出18岁以下的数据,并加入job属性。
const arr = [{name:'Jack',age:30},{name:'Bob',age:7},{name:'Alice',age:12}]; //已知数组arr
const filterResult = arr.filter(item => item.age < 18); //过滤出年龄小于18的数据
filterResult.forEach((item,index) => {
filterResult[index].job = 'student'
}); //过滤后的数据中加入job属性
console.log(filterResult)
//[
// { name: 'Bob', age: 7, job: 'student' },
// { name: 'Alice', age: 12, job: 'student' }
//]
第二步:用reduce()方法去重。
const mergedArr = arr.concat(filterResult).reduce((acc, curr) => {
if (acc.includes(curr)) {
return acc
} else {
return acc.concat(curr)
}
}, []); //reduce方法去重
console.log(mergedArr)
//[
// { name: 'Jack', age: 30 },
// { name: 'Bob', age: 7, job: 'student' },
// { name: 'Alice', age: 12, job: 'student' }
//]
第二步:或者用Set()方法去重。
const mergedArr = Array.from(
new Set([...arr, ...filterResult].map((item1) => JSON.stringify(item1))),
).map((item2) => JSON.parse(item2)); //Set方法去重
console.log(mergedArr)
//[
// { name: 'Jack', age: 30 },
// { name: 'Bob', age: 7, job: 'student' },
// { name: 'Alice', age: 12, job: 'student' }
//]
最终得到新数组mergedArr。