そうする
var x = new Array();
x['length']=5;
xを5つの未定義項目の配列にしますが、実際には値「5」をキー「長さ」に格納したいと考えています。
それは可能ですか?
そうする
var x = new Array();
x['length']=5;
xを5つの未定義項目の配列にしますが、実際には値「5」をキー「長さ」に格納したいと考えています。
それは可能ですか?
JavaScript 配列にはキーがありません。オブジェクトを探しています:
var x = {}
x.length = 5;
多くの単語を含むファイルを解析し、各単語の出現回数を保存する必要があります
オブジェクトを使用し、単語をキーにします。シーケンシャル/順序付けされたデータを保存していないため、配列を使用しないでください。
var word_count = {};
for (var i; i < words.length; i++) {
var word = words[i];
if (word_count[word]) {
word_count[word]++;
} else {
word_count[word] = 1;
}
配列の代わりにオブジェクトを使用してデータを保存できます。ただし、配列を使用する必要がある場合 (その機能を使用する必要がある場合があります)、単語を無効にして配列キーとして格納できます。
考えられるすべてのキーワードをバイパスするために、何らかの単純なルールに従うようにしてください。たとえば、すべての配列キーの前に「_」文字を付けます。このようにして、最初の文字を削除するだけでキーから元の単語をいつでも復元でき、配列オブジェクトの特定のプロパティ (長さプロパティなど) を参照していないことを確認できます。
2 つの異なる構文を使用して、JavaScript オブジェクトのメソッドを呼び出すことができます。メソッドを呼び出す括弧付きの使い慣れた「ドット」構文と、角かっこ構文。構文を使用して、JavaScript オブジェクトのメソッドを「呼び出す」ことができますmyObj["methodname"](args)
。これは、文字列を使用してメソッド名を動的に構築する場合に便利です。JavaScript のオブジェクトは、キーがプロパティ名と関数名を表すハッシュ テーブル (辞書) に非常によく似ていることを思い出してください。キーの値が関数を保持している場合は、(括弧を使用して) 呼び出すことができます。
あなたの例では、Array には「length」というメソッドがあります。誤ってセッターを呼び出しています (配列の長さを空の値、つまり未定義に設定します)。
それはさておき、この場合は本当にハッシュ (連想配列) が必要です。配列は、オフセット インデックス付きのデータ構造です。
のような単純なオブジェクト リテラルmyObj = {}
は、ハッシュ セマンティクスを提供するのに十分です (ここでも、JavaScript のオブジェクトは既にハッシュに似ています)。myObj.whatever = "some value"
これを行いたい場合は、配列ではなくオブジェクトを作成する方がよいでしょう。これにより、必要なものが得られるはずです。
var x = {};
x['length'] = 5;