の長さを取得:は、私は次のオブジェクト持つオブジェクト
var l={"a":1,"b":2,"c":5};
を私はこの
alert(l.length);
の長さを取得したいが、それはundefined
を返します。明らかに私は答えとして3
を得るために探しています。誰か助けてくれますか?
の長さを取得:は、私は次のオブジェクト持つオブジェクト
var l={"a":1,"b":2,"c":5};
を私はこの
alert(l.length);
の長さを取得したいが、それはundefined
を返します。明らかに私は答えとして3
を得るために探しています。誰か助けてくれますか?
あなたは、オブジェクト内のキーの配列を返しますObject.keys()
を使用して、オブジェクト、内のエントリの数を数えることができます。しかし、それはより効率的(かつクロスブラウザ)であるかもしれない
var l = {a: 1, b: 2, c: 3};
Object.keys(l).length;
私はあなたが、私ディl.length()
を書くことができるように、Object.prototype.length
としての機能を定義している可能性がその
Object.length = function(obj) {
var i = 0;
for(var key in obj) i++;
return i;
}
Object.length(l);
注:独自のプロパティを実装しますあなたのオブジェクトコンテナのキーがlength
の場合には失敗します。
'Object.keys()'がES5なので、ブラウザのサポートは厄介です。 – jmar777
IE版<= 8で動作しません。 –
@ jmar777 [Polyfill it](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Object/keys#Compatiblity)。 – Blazemonger
var l={"a":1,"b":2,"c":5};
Object.keys(l).length;
以前の投稿からメモを追加する:これはすべてのブラウザでサポートされていません。 – patrick
function count(O){
for(var p in O){
if(O.hasOwnProperty(p))++cnt;
}
return cnt;
}
count(l);
これはオブジェクトであり、配列ではありません。 – x1a4
これはデモンストレーションコードだと思っていますが、名前として小文字のLを使用すると、変数をナンバーワンと混同する簡単な方法と言えるでしょうか? – Blazemonger
@Blazemonger:シンボルを混乱させることに懸念があるなら、より良いフォント/シンタックスハイライターが必要です。ツールが貧弱なためにコードを変更しないでください。 – Eric