只能将二维转一维:
第1种:使用reduce和concat组合方法:
var arr = [[1,2,[3,11,22,[222,99,100]]],[4,5,6],[7,8,9]];
var newArr = arr.reduce(function(pre,curr,index,array){
return pre.concat(curr);
})
console.log(newArr)//[1, 2, 3, 4, 5, 6, 7, 8, 9]
//VM676:5 (9) [1, 2, Array(4), 4, 5, 6, 7, 8, 9]
第2种:遍历数组,将每个值放到一个空数组中:
var arr = [[1,2,[3,11,22,[222,99,100]]],[4,5,6],[7,8,9]];
var newArr = [];
for (var i = 0;i<arr.length;i++){
for(var j=0;j<arr[i].length;j++){
newArr.push(arr[i][j]);
}
}
console.log(newArr)//[1, 2, 3, 4, 5, 6, 7, 8, 9]
//VM687:8 (9) [1, 2, Array(4), 4, 5, 6, 7, 8, 9]
第3种:使用apply结合concat,缺点是只能将二维转一维,多维数组则不对了。
const arr = [1,[2,3],[4,5]];
console.log([].concat.apply([],arr));
//VM96:2 (5) [1, 2, 3, 4, 5]
const arr2 = [1,[2,[[3,4],5],6]];
console.log([].concat.apply([],arr2));
//VM114:2 (4) [1, 2, Array(2), 6]
多维(二维以上也能转化):
第1种:先转化为字符串,再将字符串转化为数组
var arr = [[1,2,[3,11,22,[222,99,100]]],[4,5,6],[7,8,9]];
var newArr1 = arr.join(",").split(",");
var newArr2 = arr.toString().split(","); //["1", "2", "3", "4", "5", "6", "7", "8", "9"]
console.log(newArr2)
//VM661:5 (14) ["1", "2", "3", "11", "22", "222", "99", "100", "4", "5", "6", "7", "8", "9"]
第2种:使用数组map()方法,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
var arr = [1,[2,[[3,4],5],6]];
function unid(arr){
var arr1 = (arr + '').split(',');//将数组转字符串后再以逗号分隔转为数组
var arr2 = arr1.map(function(x){
return Number(x);
});
return arr2;
}
console.log(unid(arr));
//VM62:9 (6) [1, 2, 3, 4, 5, 6]
第3种:使用递归
var arr = [1,[2,[[3,4],5],6]];
var newArr = [];
function fun(arr){
for(var i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
fun(arr[i]);
}else{
newArr.push(arr[i]);
}
}
}
fun(arr);
console.log(newArr);//[1, 2, 3, 4, 5, 6]
//VM71:14 (6) [1, 2, 3, 4, 5, 6]
第4种:使用 reduce+递归
var arr = [1,[2,[[3,4],5],6]];
const flatten = arr => arr.reduce(
(acc,val) => acc.concat(Array.isArray(val)? flatten(val):val),[]
)
console.log(flatten(arr));//[1, 2, 3, 4, 5, 6]
//VM85:6 (6) [1, 2, 3, 4, 5, 6]
第5种:使用while循环
文章来源:https://www.toymoban.com/news/detail-502300.html
var myArray = [[1, 2],[3, 4, [5,22,33,[111,123,321]]], [6, 7, 8, 9]];
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
//arr = Array.prototype.concat.apply([],arr);
}
return arr;
}
flatten(myArray);
//(14) [1, 2, 3, 4, 5, 22, 33, 111, 123, 321, 6, 7, 8, 9]
文章来源地址https://www.toymoban.com/news/detail-502300.html
到了这里,关于js中的多维数组转成一维数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!