7

私はJavascriptに比較的慣れていないので、おそらく慣れていないトリックがありますが、配列キーにブール値を割り当てるにはどうすればよいですか?

何が起こっていますか:

var test = new Array();
test[false] = "asdf";
test['false'] = "fdsa";

Object.keys(test); // Yield [ "false" ]
Object.keys(test).length; // Yield 1

私がしたいこと:

var test = new Array();

//Some stuff

Object.keys(test); // Yield [ "false" , false ]
Object.keys(test).length; // Yield 2
4

4 に答える 4

11

配列で任意のインデックスを使用することはできませんが、オブジェクトリテラルを使用して、目的を達成することができます。

var test = {};
test[false] = "asdf";
test['false'] = "fdsa";

ただし、オブジェクトのプロパティは文字列(または文字列に変換できるタイプ)でなければならないことに注意してください。ブールプリミティブを使用すると、という名前のオブジェクトプロパティが作成されます'false'

test[false] === test['false'] === test.false

Object.keys().lengthこれが、最初の例の呼び出しがちょうどを返す理由1です。

JavaScriptのオブジェクトに関する優れた入門ガイドとして、MDNのオブジェクトの操作をお勧めします。

于 2013-01-24T04:34:50.660 に答える
3

Javascriptの配列は関連付けられていないため、配列のキーに値を割り当てることはできません。

var test = [];
test.push(true);  // [true]
test.push(false); // [true, false]

あなたはオブジェクトに興味があります!

var test    = {};
test[true]  = "Success!";
test[false] = "Sadness";  // {'false': "Sadness", 'true': "Success"}
于 2013-01-24T04:34:17.433 に答える
1

Javascript配列は、数値インデックスのみに基づいています。キーとして0と1を使用できます(ブールキーが必要な場合は考えられませんが)。myArr[0] = "mapped from false"; myArr[1] = "mapped from true";

于 2013-01-24T04:33:53.817 に答える
1

上記の答えを逆にすることもできます

let test = [true];

console.log(typeof test);

// Output: Object True
于 2019-03-09T23:50:08.640 に答える