这句代码意思

荷♪鲤
  • 5
新手上路,请多包涵
//多维转一维
    let arr = [
        [1],
        [2, 3],
        [4]
    ];
    const newArr = function(arr) {
        return arr.reduce((pre, cur) => pre.concat(Array.isArray(cur) ? newArr(cur) : cur), [])
    }
    console.log(newArr(arr)); //[1, 2, 3, 4]
    
    

return arr.reduce((pre, cur) => pre.concat(Array.isArray(cur) ? newArr(cur) : cur), [])这段代码啥意思求解答谢谢。。

回复
阅读 309
2 个回答
✓ 已被采纳
const newArr = function(arr) {
    return arr.reduce((pre, cur) => {// 这是个箭头函数
        // 判断cur 是否为数组:是数组则 newArr(cur) 递归调用
        // 一直到cur不是数组了,则赋值给tmp
        let tmp = Array.isArray(cur) ? newArr(cur) : cur;
        // 把tmp和pre拼接起来,作为返回值
        return pre.concat(tmp);
    }, [])
}

reduce遍历数组

[1,2,3].reduce(callback, initValue);
[1,2,3].reduce((pre, current, index, array)=>{
    console.log(pre, current, index, array);
}, 0);

这里有reduce的其他应用,可以参考下

你知道吗?

宣传栏