...
表記は正確です。
私はそれを理解するためにBabelで簡単な例を試しました( 例を見る )が、それはそうです:
ES6構文
let myArray = [1, 2, 3, ...18];
console.log(myArray); // [1, 2, 3]
console.log(myArray[4]);// undefined
console.log(myArray.length); // 3
これはES5構文と同じです:
"use strict";
function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
var myArray = [1, 2, 3].concat(_toConsumableArray(18));
console.log(myArray); // [1, 2, 3]
console.log(myArray[4]); // undefined
console.log(myArray.length); // 3
BUT:このコードは何をしますか?出力(console.log
)はこのコード(ES5)と同じです。
var myArray = [1,2,3];
console.log(myArray); // [1, 2, 3]
console.log(myArray[4]);// undefined
console.log(myArray.length); // 3
...18
表記はどういう意味ですか?
...
( spread operator )は、インデックス0
からインデックスlength-1
に各値を返すことで機能します。
例として:
[...'18'] // returns ['1', '8']
これは次と同じです:
['18'[0], '18'[1]]
ここで、1
から18
に配列を取得するには、次のようにします。
[...Array(19).keys()].slice(1)
またはこれをマップで:
[...Array(18)].map(_=>i++,i=1)
それが役に立てば幸い。