JSで任意の長さの充填配列を作成します.

1200 ワード

JSで任意の長さの充填配列を作成します.
共通の配列を作成する方法は、Aray(length)を使用することである.このように配列を作成しますが、このように作成された配列には二つの問題があります.一つは生成された配列が実際にはまばらな配列です.これによってもたらされる直接的な問題は、mapまたはforEachの方法を使用することができません.列子をあげる
var a = new Array(5);
//[,,,,]
a = a.map((item, index)=>index)
//[,,,,]

この方法で生成された配列には実際には内容がなく、単にlength属性を持っているだけで、chromeのconsoneで見るとemptyが見られますが、emptyの配列に対しては、forEachとmapメソッドを使用することは有効になりません.
次に0を使って充填する配列を生成してみます.
new Array(5).fill(0)
Array.from(Array(5)).map(()=>0))
Array.from(Array(5), ()=>0)
Array.apply(null, Array(5)).map(()=>0)
[...Array(5)].map(()=>0)
インクリメント配列を生成
Array.from(Array(5)).map((item, index)=>index)

Array.from(Array(5), (item, index)=>index)

Array.apply(null, Array(5)).map((item, index)=>index)

[...Array(5)].map((item, index)=>index)

[...Array(5).keys()]
Aray.fillを使う時、特に注意しなければならないのが、充填した値を対象とする時です.
var a = new Array(3).fill({a: 0, b: 0})
a[0].a = 100;
console.log(a);

その結果、aの中のすべての項目のa属性の値が100になっていることが分かります.これは同じオブジェクトを共有するべきです.
最適化方式は以下の通りです.
var a = Array.from(new Array(3), ()=>({a: 0, b: 0}));
a[0].a = 200;
console.log(a);