Open ntscshen opened 2 years ago
来一个脑残的题,实际开发中我是没遇到过。 扁平化就是将多维数组变成一维数组
[1, [2, [3, [4, 5]]], 6]
将其扁平化处理 输出:[1,2,3,4,5,6]
- 递归
const arr = [1, [2, [3, [4, 5]]], 6];
function flat(arr, result = []) { arr.forEach(item => { if (Array.isArray(item) && item.length) { result = flat(item, result); } else { result.push(item); } }) return result; } flat(arr);
1. 非递归
```js
const arr = [1, [2, [3, [4, 5]]], 6];
function flat(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
flat(arr);
这个实际开发中有多常用就不用再赘述了。 写这篇主要为了 缕个思路。
去重普通数字
uniq(data);
去重对象数组
function uniqBy(arr, uniId) { const result = []; const tempObj = {}; arr.forEach(item => { if (!tempObj[item[uniId]]) { result.push(item); tempObj[item[uniId]] = true; } }) return result; } console.log(uniqBy(data, 'skuId'));