118

新しい JavaScript 配列を作成し、整数をキーとして使用すると、その配列の整数までの各要素が未定義として作成されます。

例えば:

var test = new Array();
test[2300] = 'Some string';
console.log(test);

2298 個の undefined と 1 個の「Some string」が出力されます。

JavaScript で 2300 を整数ではなく文字列として使用するにはどうすればよいですか? または、2299 の空のインデックスをインスタンス化しないようにするにはどうすればよいですか?

4

10 に答える 10

141

人々が言うように、オブジェクトを使用してください。ただし、整数キーは使用できないことに注意してください。JavaScript は整数を文字列に変換します。次の出力は 20 であり、未定義ではありません。

var test = {}
test[2300] = 20;
console.log(test["2300"]);

于 2010-01-04T23:12:17.450 に答える
37

オブジェクトを使用するだけです:

var test = {}
test[2300] = 'Some string';
于 2010-01-04T23:05:02.640 に答える
21

ユースケースがコレクションにデータを格納する場合、ECMAScript 6Map型を提供します。

初期化するだけで重くなります。

次に例を示します。

const map = new Map();
map.set(1, "One");
map.set(2, "Two");
map.set(3, "Three");

console.log("=== With Map ===");

for (const [key, value] of map) {
    console.log(`${key}: ${value} (${typeof(key)})`);
}

console.log("=== With Object ===");

const fakeMap = {
    1: "One",
    2: "Two",
    3: "Three"
};

for (const key in fakeMap) {
    console.log(`${key}: ${fakeMap[key]} (${typeof(key)})`);
}

結果:

=== With Map ===
1: One (number)
2: Two (number)
3: Three (number)
=== With Object ===
1: One (string)
2: Two (string)
3: Three (string)
于 2016-12-25T17:39:15.003 に答える
4

配列の代わりにオブジェクトを使用します。JavaScript の配列は連想配列ではありません。それらは、名前が整数のように見える任意のプロパティに関連付けられた魔法を持つオブジェクトです。それらを従来の配列のような構造として使用していない場合、その魔法はあなたが望むものではありません。

var test = {};
test[2300] = 'some string';
console.log(test);
于 2010-01-04T23:05:59.240 に答える
3

配列ではなく、オブジェクトを使用してみてください。

var test = new Object(); test[2300] = 'Some string';
于 2010-01-04T23:05:38.193 に答える
0

配列ではなく、キーとして整数を持つオブジェクトを使用します。

于 2010-01-04T23:06:35.977 に答える