<script>
let arr = [1, 2, 3, [4], [5, 6, [7]]]
let newArr = []
// 方法一(适合新手练习)
function flat(newArr, arr) {
arr.forEach(item => {
// console.log(typeof (item));
if (item instanceof Array) {
flat(newArr, item)
} else {
newArr.push(item)
}
});
}
// 方法二(逻辑较为复杂)
function flat(arr) {
let newArr = []
arr.forEach(i => { i instanceof Array ? newArr = newArr.concat(flat(i)) : newArr.push(i) })
return newArr
}
// flat(newArr, arr)
// console.log(newArr);
console.log(flat(arr));
</script>
reduce方法去重数组中id相同的对象,id冲突只保留前面的
<script>
let person = [
{ id: 0, age: 12 },
{ id: 1, age: 13 },
{ id: 2, age: 14 },
{ id: 3, age: 15 },
{ id: 1, age: 16 },
{ id: 2, age: 17 },
];
let obj = {};
person = person.reduce((cur, next) => {
// obj中没有id,往cur数组中添加该next对象,并给obj中的id赋值,下次判断obj的id中有值就不再执行if里面的操作
if (!obj[next.id]) {
cur.push(next)
obj[next.id] = next
}
// 遍历结束把新对象返回出去
return cur
}, [])
console.log(person)
</script>