繁体   English   中英

在javascript中映射嵌套数组中的非对象值

[英]map non-object values in nested arrays in javascript

我正在尝试映射具有n维子数组的数组。 我看过深图,但我没有使用任何物体。 我正在尝试做的一个例子是:

    deepMap([4,5,[3,4,[2]]], (x) => x+5) 
    returns [9,10,[8,9,[7]]] 

deepMap中数组之后的函数可以是任何函数

        const deepMap=(arr, fn) =>{
            const stop = arr.length===0;
            const tail = arr.slice(1);
            const head = arr[0];
            const front = head instanceof Array ? [head[0]]: [] ;
            const next = fn(front, head);
            return stop ? [] : front.concat(deepMap(tail,fn));

        }

如何将函数应用于嵌套数组中的值,同时保持整个数组是嵌套数组?

任何帮助是极大的赞赏!

使用简单的递归。 对于嵌套数组, deepMap递归方式调用调用deepMap的数组。 到达叶子时,请调用该函数。

 function deepMap(arr, fn) { return arr instanceof Array ? arr.map(el => deepMap(el, fn)) : fn(arr); } console.log(deepMap([4, 5, [3, 4, [2]]], (x) => x + 5)); 

你可以用Haskellesque的方式做以下事情;

 function deepMap([x,...xs],f){ return x ? [Array.isArray(x) ? deepMap(x,f) : f(x), ...deepMap(xs,f)] : []; } var arr = [4,5,[3,4,[2]]], res = deepMap(arr, x => x+5); console.log(res); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM