この例では配列を配列として使用していません。
あなたがオブジェクトとして空の配列を使用し始めている何をやったか
['a', 'b', 'c']
.. []シンプルで経由してプロパティにアクセス:JSでの配列は、このようなものの唯一の束(厳密に)されています文字列/変数...そう
var obj = {test: 'blah'}
obj['test'] //is 'blah'
obj.test //is also blah
あなたは、変数を介して、またはプロパティやメソッドは「安全」である何かでない場合、プロパティやメソッドにアクセスしようとしているとき、一般的には[]の表記が使用されています。例えば 'int'のように。
だから、あなたが持っているものをオブジェクトに変え、 'for for'ループでキーをステップインします。はい、あなたはまだそれがhasOwnProperty(またはjquery /アンダースコア 'each')を使用するかどうかを確認するためにそれぞれをチェックする必要がありますが、少なくともあなたは仕事のための適切なツールを使用しています:)または、キーの数、underscore.jsにはちょっとした_.keysメソッドがあります。だから、_.keys(obj).lengthはキーの数を与えます。確かにそれはちょうどローカルキー、プロトタイプのものではないことを確認してください..
編集:私はあなたが単純にカウントを得ることができることを認識しているJSのプロパティはありませんキーのそれはあなたがで作業していなかっただけで、特定のものだった場合は「すべてのオブジェクトの、あなたは...
var specialObject = function() {this.keys = 0;};
specialObject.prototype.set = function (key, val) {
if(!this[key]) {
this.keys++;
}
this[key] = val;
};
var so = new specialObject();
so.set('test', 'blah');
so.keys //would be 1
so.test //would be 'blah'
ような何かを行うことができ、その後、ちょうど常に使用する 『』に設定します。あなたは、 'unset'メソッドと 'get'メソッドを作成したいでしょう。
うまくいけば、これはすべて意味があります。それはちょっとラブリーです。
はこちらをご覧ください:http://stackoverflow.com/questions/5223/length-of-javascript-associative-arrayループ – jValdron
を。あなたは同じことをするいくつかの関数を見つけることができるかもしれませんが、私はフードの下でループする必要があると確信しています。ループを望んでいない理由は何ですか? –
に私がループのために必要であることをかなり確信しているためだ –