[英]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.