私はそのようなものを持っています:
var valueToPush = new Array();
valueToPush["productID"] = productID;
valueToPush["itemColorTitle"] = itemColorTitle;
valueToPush["itemColorPath"] = itemColorPath;
cookie_value_add.Push(valueToPush);
結果は[]です。
私は何が間違っていますか?
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オブジェクト(連想配列)の根本的かつ重大な違いです。
つかいます - []
:
cookie_value_add.Push([productID,itemColorTitle, itemColorPath]);
または
arrayToPush.Push([value1, value2, ..., valueN]);
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);