📝
[].concat(a1(), a2())
[].concat(a1(), a2())
こういうコードを見て、別に配列リテラルそのまま書けばいいじゃんと思ったんだけど、よく考えたら少し便利かもしれない。
a1
や a2
が配列を返す場合、配列リテラルだと配列の配列になってしまう。
function a1() {
return [1, 2, 3];
}
function a2() {
return [4, 5, 6];
}
console.log([a1(), a2()]); // [[1, 2, 3], [4, 5, 6]]
Array.prototype.concat
ならフラットになる。
function a1() {
return [1, 2, 3];
}
function a2() {
return [4, 5, 6];
}
console.log([].concat(a1(), a2())); // [1, 2, 3, 4, 5, 6]
これがうれしいことはまあまあありそうなので覚えておいて良いパターンかもしれないが、初見だと「?」となる。
Array.prototype.concat.call(a1(), a2())
みたいなのもありえるのか。いや、長いか。
Discussion