JavaScriptの配列が平坦化されています.
8352 ワード
問題:配列平準化とは?
つまり、ネストされた多層の配列を1層だけの配列に変換します.例えば、
1.for循環再帰的(for循環配列要素を利用して、配列要素が配列であれば再帰的に呼び出される)
つまり、ネストされた多層の配列を1層だけの配列に変換します.例えば、
[1,[2,[3,[4,5]]]]
の平準化は、[1, 2, 3, 4, 5]
である.1.for循環再帰的(for循環配列要素を利用して、配列要素が配列であれば再帰的に呼び出される)
var array = [1,[2,[3,[4,5]]]]
function flatten(array){
var result = [];
for(var i=0; i<array.length; i++){
if(array[i] instanceof Array){
result = result.concat(flatten(array[i]));
}else{
result.push(array[i])
}
}
return result;
}
console.log(flatten(array)) //[1, 2, 3, 4, 5]
2.toStringを利用して(フラット化が必要な配列をtoStringメソッドを文字列に変えて、splitを呼び出して配列に変えます) var array = [1,[2,[3,[4,5]]]];
function flatten(array){
return array.toString().split(',').map( item => +item)
}
console.log(flatten(array)) //[1, 2, 3, 4, 5]
3.ES 6を利用して拡張演算子を追加します.(拡張演算子は平坦な1つのレイヤーだけです.) var array = [1,[2,[3,[4,5]]]];
function flatten(array){
while(array.some( item => Array.isArray(item) )){
array = [].concat(...array);
}
return array;
}
console.log(flatten(array)) //[1, 2, 3, 4, 5]