我想对数组各级的每个值应用一个函数:
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/