web-dev-qa-db-ja.com

JavaScriptプッシュ多次元配列

私はそのようなものを持っています:

    var valueToPush = new Array();
    valueToPush["productID"] = productID;
    valueToPush["itemColorTitle"] = itemColorTitle;
    valueToPush["itemColorPath"] = itemColorPath;

    cookie_value_add.Push(valueToPush);

結果は[]です。

私は何が間違っていますか?

38
sinini

JavaScriptでは、配列にはゼロベースの整数インデックスが必要です。そう:

var valueToPush = new Array();
valueToPush[0] = productID;
valueToPush[1] = itemColorTitle;
valueToPush[2] = itemColorPath;
cookie_value_add.Push(valueToPush);

または、オブジェクト(連想配列)を使用することもできます。

var valueToPush = { }; // or "var valueToPush = new Object();" which is the same
valueToPush["productID"] = productID;
valueToPush["itemColorTitle"] = itemColorTitle;
valueToPush["itemColorPath"] = itemColorPath;
cookie_value_add.Push(valueToPush);

次と同等です:

var valueToPush = { };
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;
cookie_value_add.Push(valueToPush);

すべてのJavaScript開発者が理解しなければならないのは、JavaScript配列とJavaScriptオブジェクト(連想配列)の根本的かつ重大な違いです。

68
Darin Dimitrov

つかいます - []

cookie_value_add.Push([productID,itemColorTitle, itemColorPath]);

または

arrayToPush.Push([value1, value2, ..., valueN]);
7
user2560779

JavaScriptでは、使用しようとしているキー/値ストアのタイプは、配列ではなくオブジェクトリテラルです。誤って複合配列オブジェクトを作成しています。このオブジェクトには、指定したキー名に基づいて他のプロパティがありますが、配列部分には要素が含まれていません。

代わりに、valueToPushをオブジェクトとして宣言し、それをcookie_value_addにプッシュします。

// Create valueToPush as an object {} rather than an array []
var valueToPush = {};

// Add the properties to your object
// Note, you could also use the valueToPush["productID"] syntax you had
// above, but this is a more object-like syntax
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;

cookie_value_add.Push(valueToPush);

// View the structure of cookie_value_add
console.dir(cookie_value_add);
5