javascript迭代并映射多维数组

标签 javascript arrays

我想对数组各级的每个值应用一个函数:

arr = [[1,2,3],[1,2,3],[[1,2],[1,2]],1,2,3]

例如,将所有值乘以 3,并以与之前相同的格式进行映射,这样我就得到:

arr = [[3,6,9],[3,6,9],[[3,6],[3,6]],3,6,9]

解决这个问题的最佳方法是什么?

我尝试使用递归函数:

function mapall(array){
         array.map(function(obj){
                   if (Array.isArray(obj)===true) { return mapall(obj) }
                   else{ return obj*3 }
                   })
            };

但是当我运行它时,我只是得到了未定义,所以我一定做了一些不太正确的事情??

有什么想法吗?

谢谢

最佳答案

一切正常,但您忘记从 array.map 返回。这是代码的更简洁版本:

var arr = [[1,2,3],[1,2,3],[[1,2],[1,2]],1,2,3];
function mapAll(array){
  return array.map(function(item){
    return Array.isArray(item) ? mapAll(item) : item * 3;
  });
}
alert(JSON.stringify(mapAll(arr)));

关于javascript迭代并映射多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476961/

相关文章:

javascript - 将 RGB 一种颜色转换为图像 HTML 5 Canvas 的另一种颜色

javascript - 带有 ExtractTextPlugin 的 webpack-dev-server 不会生成 scss 文件的 css

javascript - 使用绑定(bind)强制原型(prototype)函数的上下文

ios - 如何知道我的数组是否包含字典?

PHP - 获取 : Commands out of sync; you can't run this command now

c - 我是否需要对 C 中的字符串数组使用二维数组?

javascript - angular ng-messages 仅在 $touched 为真时显示

如果选择了类,则 jQuery 将对象添加到数组

arrays - 在Verilog中,索引后面的加号/减号有什么作用?

javascript - 从 CKeditor 获取非 html 文本