2011-01-07 10 views

答えて

6

それは、プロパティで構成されているオブジェクトであり、そしてあなたがこのような何かを行う必要があります(連想配列、またはハッシュテーブルに概念的に類似)のキー/値ペアの形取るので:

Object.size = function(obj) { 
    var size = 0, key; 
    for (key in obj) { 
     if (obj.hasOwnProperty(key)) size++; 
    } 
    return size; 
}; 

var array = []; 
array["foo"] = "bar"; 
array["bar"] = "foo"; 

var size = Object.size(array); 

デモ:http://jsfiddle.net/gBG34/

+1

また、Object.prototype.size = function()... そして、var size = array.size() –

+0

...または普通の関数として使うことができます。ちょうど ' getSize(var); ' – karim79

+3

JSには連想配列はありません。これはオブジェクトであり、そのプロパティにアクセスするための代替構文です。 'array [" foo "]'の代わりに 'array.foo'と書くこともできます。長さのプロパティは機能しません。彼は配列オブジェクトにプロパティを設定し、配列にアイテムを追加しません。 – DanMan

1

は、基本的には、それだけでオブジェクトである配列、にいくつかのより多くの属性を追加します。 javascriptでは、array.fooとarray ['foo']は同じ意味を持ちます。

+0

感謝を行きます。しかし、それは質問に答えない? – Mantar

+1

オブジェクトに変換しません。配列*は*オブジェクトなので、任意のプロパティを設定することができます。 – lonesomeday

0

たぶん私は(私のjavascriptのは、それが何であるかではありません)ナイーブされていますが、それはこのようなものであってはならない。あなたがいずれかを入れていないので、実際のサイズが0である

var array = []; 
array[0] = "bar"; 
array[1] = "foo"; 
document.write(array.length); 
0

項目を配列オブジェクトに変換する - これは、メソッド(プッシュなど)またはインデックス付きプロパティ(またはコンストラクタ)に値を代入する方法のいずれかでのみ行うことができます。

4

はあなたがいないことに新しい要素を与え、アレイ上のプロパティを設定しています。配列は他のJavascriptオブジェクトと同様に、任意のプロパティを受け取ることができます。例えば:

var foo = []; 
foo.bar = 'foobar'; 
console.log(foo.bar); // outputs 'foobar' 
console.log(foo); // outputs [] -- empty array 

、配列に項目を追加Array.pushを使用するには:

var foo = []; 
foo.push('foobar'); 
console.log(foo); // outputs ['foobar'] 

キー=>値のペアをしたい場合は、代わりにオブジェクトを使用します。

var foo = {}; 
foo['bar'] = 'foobar'; 
console.log(foo); // outputs {bar: 'foobar'} 
7

まずオフarrayの項目数が0であるため、長さは0です。

この構文array["foo"] = "bar"fooという値を持つプロパティを作成しています。値はbarです。長さはまだ0であるあなたは配列には何も追加されていないことから、あなたはちょうどここアレイ

の作業バージョンに新しいプロパティを設定しました:array.length = 4しかしprops = 7の全てであることをhttp://jsfiddle.net/VyjJD/3/

var array = []; 

array["foo"] = "bar"; 
array["bar"] = "foo"; 
array.bin = function() { return "bin"; }; 

array[0] = "bar"; 
array[1] = "foo"; 
array[2] = "bin"; 
array[3] = "bat"; 

var props = 0; 

for (key in array) 
    props++; 

document.write(array.length + "<br />" 
      + props + "<br />" 
      + (array.foo == array["foo"]) + "<br />" 
      + array.bar + "<br />" 
      + array.bin()); 

お知らせ配列内の項目の数とプロパティを取得します。

+0

+100。素晴らしい説明。ありがとうございました。 – Radek

関連する問題