配列の平坦化とは
多次元配列を一次元配列にすることです。
[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]
flat()
const arr = [1, [2, 3, [4, 5],["a",{a:1}]]];
var arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]
arr.flat(Infinity);
reduce
// String Number Object
const arr = [1, [2, 3, [4, 5],["a",{a:1}]]];
function change(arr){
return arr.reduce((result,item,index,self)=>{
return result.concat(Array.isArray(item) ? change(item) : item);
},[]);
}
console.log(change(arr));
toString && split
const arr = [1, [2, 3, [4, 5],["a"]]];
function change(arr){
return arr.toString().split(',').map(item=>{
return Number(item) ? Number(item) : item;
});
}
console.log(change(arr));
join && split
const arr = [1, [2, 3, [4, 5],["a"]]];
function change(arr){
return arr.join(',').split(',').map(item=>{
return Number(item) ? Number(item) : item;
});
}
console.log(change(arr));
map &&
const arr = [1, [2, 3, [4, 5],["a",{a:1}]]];
function change(arr){
let newArr = [];
arr.map(item=>{
if(Array.isArray(item)){
newArr = newArr.concat(change(item));
}else{
newArr.push(item);
}
});
return newArr;
}
console.log(change(arr));
拡張演算子
const arr = [1, [2, 3, [4, 5],["a",{a:1}]]];
function change(arr){
while(arr.some(item=>Array.isArray(item))) {
// [].concat(...arr)になる。[] ,[2,3]配列にマージする。[1,2,3]
arr = [].concat(...arr);
}
return arr;
}
console.log(change(arr));





