Array(n)と[... Array(n)]の違い

Veeshoo

以下のコードでmap()の出力に違いがあるのはなぜですか?

var y = [1,2,2,1];

var t = y.map(ind => [...Array(ind)].map((_,i) => ind+""+i));
// This makes [ [ '10' ], [ '20', '21' ], [ '20', '21' ], [ '10' ] ]

var t1 = y.map(ind => Array(ind).map((_,i) => ind+""+i));
//[ [ <1 empty item> ], [ <2 empty items> ], [ <2 empty items> ], [ <1 empty item> ] ]
マダラの幽霊

これが基本的に、配列コンストラクターを使用して配列を作成することを避ける必要がある理由です。

単一の数値nを引数として渡すと、Arrayコンストラクターは長さの配列を返しますnが、要素は返しません。これスパース配列とも呼ばれます。(配列コンストラクター、文字列、オブジェクト、2つの数値などに渡される他のすべてのものは、渡された引数を要素として順番に持つ通常の配列を作成します)。

.map()この配列には項目がないため、この配列上書きしようとしても機能しません。これが、同じスパース配列を取得する理由です。あなた.map()はノーオペレーションです。

使用[...(と同じArray.from()それを介して、)、旋回アレイ「の実現」であろう[ <1 empty item> ][undefined][ <2 empty items> ][undefined, undefined]、値であり、実際の要素を持つ配列をundefinedあなたが期待する結果を得るので、この上で作業を。.map()

つまり、Arrayコンストラクターは避けてください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Array(n)とArray(n).fillの違いは?

分類Dev

T [N]とstd :: array <T、N>の違い

分類Dev

Array.of(n)、Array(n)、array = [n]の違いは何ですか?

分類Dev

array()と[]のPHPの違い

分類Dev

[String]とArray <String>の違い

分類Dev

varargとarrayの違い

分類Dev

NlohmannJsonの「array」と「array_t」の違い

分類Dev

Array.isArrayとinstanceof Arrayの違い

分類Dev

Array.length = 0とArray = []の違いは?

分類Dev

array_push()と$ array [] =の違い

分類Dev

std :: arrayとboost :: arrayの違い

分類Dev

array [i] [:]とarray [i 、:]の違い

分類Dev

Array.zeroCreateとArray.initの違い

分類Dev

%79 [^ \ n]と%79 [^ \ n] \ nの違い

分類Dev

\ nと\ rの違いは?

分類Dev

vim :: nと:bnの違い

分類Dev

JavaScriptの「新しいArray(n)」と「Array.prototype.map」の奇妙さ

分類Dev

Go Slice-[:n]と[n:]の違い

分類Dev

* var [n]と(* var)[n]の違い

分類Dev

O(log n)とO(log(n + a))の違い

分類Dev

正規表現-\\ nと\ nの違い

分類Dev

seq <int>とarray <int>のDafnyの違い

分類Dev

Array.apply(null、Array(x))とArray(x)の違い

分類Dev

array_mergeとarray + arrayの違いは何ですか?

分類Dev

new Array(7)とArray.apply(null、Array(7))の違い

分類Dev

int []配列とint array []の違い

分類Dev

JavaScript Array everyとsomeの違い

分類Dev

std :: array begin()とdata()の違い

分類Dev

Array.methodと[] .methodの違い