Itは、それは常に空のようだ:常に0なぜ私の連想配列のdoesntのストアがオブジェクト
var idStruttura=2;
var arrayMarkers=new Array();
arrayMarkers["sede_"+idStruttura] = "ciao";
alert(arrayMarkers.length);
プリント?それをどうやって修正することができますか?
Itは、それは常に空のようだ:常に0なぜ私の連想配列のdoesntのストアがオブジェクト
var idStruttura=2;
var arrayMarkers=new Array();
arrayMarkers["sede_"+idStruttura] = "ciao";
alert(arrayMarkers.length);
プリント?それをどうやって修正することができますか?
var idStruttura=2;
var arrayMarkers={}; // creates a more appropriate object than []
arrayMarkers["sede_"+idStruttura] = "ciao";
arrayMarkers["sede_"+(++idStruttura)] = "espresso";
var len = 0;
for (var o in arrayMarkers) {
if (arrayMarkers.hasOwnProperty(o)) len++;
}
arrayMarkers.length=len
alert(arrayMarkers.length)
配列は連想配列ではない、これを試してみてくださいは、しかしながら配列オブジェクトはオブジェクトであり、すべてのオブジェクトが連想配列です。配列に項目を割り当てるときに文字列をキーとして使用する場合は、配列として使用していないため、オブジェクトとして使用しています。
配列のlength
プロパティは、配列に格納されているアイテムの数を返します。配列オブジェクトを連想配列としても使用すると、配列を配列として使用する方法には影響しません。
配列のjavascript(PHPとは異なります)には、文字キー、数字キーのみを使用することはできません。文字列リテラルをキーとして使用する場合は、オブジェクトを使用してください。
必要なものは単純なオブジェクトであり、配列ではありません。配列には数値インデックスがあります。
var markers = {};
markers['sede_' + id] = 'ciao';
も{}
がnew Object()
と同じで、[]
がnew Array()
と同じであることに注意してください。常に元のものを使用してください。どのJS開発者にとっても明らかです。
作成したのは、通常の配列オブジェクトで、sede_...
という名前のプロパティが追加されました。 JavaScriptは、PHPのような言語と同じように連想配列を使用しません。配列はプロパティを持つことができるオブジェクトですが、それらのプロパティは数値で配列された配列要素の中にはありません。
var idStruttura=2;
var arrayMarkers=new Array();
// Push an object onto the array having one property:
arrayMarkers.push({"sede_" + idStruttura : "ciao"});
// Or declare it as an object to begin with:
// This makes more sense....
var objMarkers = {};
objMarkers['sede_' + id] = 'ciao';
なぜこれが機能しますか? http://jsfiddle.net/Xtmab/ – markzzz
@markzzzこれは、その名前の配列オブジェクトにプロパティを追加したために機能します。 'for(i = 0; i
@markzzz追加したプロパティは、配列に関する追加情報を含む 'array.length'プロパティに似ています。 –
オブジェクトを格納するときの長さはありません。オブジェクトを意図したとおりに使用する場合に限ります。
(DEMO)
?これは動作しますhttp://jsfiddle.net/Xtmab/ – markzzz
しかし、それはあなたが求めるものではありません。 – mplungjan