当前位置: 代码迷 >> JavaScript >> javascript遍历并映射多维数组
  详细解决方案

javascript遍历并映射多维数组

热度:44   发布时间:2023-06-13 11:36:17.0

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

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))); 

带有回调函数的版本,您可以在其中使用所需的数组元素( el * 2或其他)

 var arr = [[1,2,3],[1,2,3],[[1,2],[1,2]],1,2,3]; function mapAll(array, cb) { for (var i = 0, len = array.length; i < len; i++) { if (Array.isArray(array[i])) { mapAll(array[i], cb); } else { array[i] = cb(array[i]); } } return array; }; var res = mapAll(arr, function (el) { return el * 3; }); console.log(JSON.stringify(res)); 

  相关解决方案