2015-03-19 32 views
1

聽到一個對象數組jQuery的。每個()數組()數組

advancedParams = []; 
advancedParams["cost"] = []; 
advancedParams["cost"]["from"] = 10; 
advancedParams["cost"]["to"] = 100; 

但是。每個()沒有看到第二陣列

$.each(advancedParams, function(idx, obj) { 
    console.log(idx); // shows cost 
    console.log(obj); // shows [from: "10", to: "200"] 
    $.each(obj, function(key, value) { 
     console.log(key); // nothing 
     //each have no iterations, why? 
    }); 
} 
+4

'{cost:[from:「10」],[to:「200」]}'我猜這是無效的。 – Jai 2015-03-19 08:03:58

+0

發現問題。當advancedParams [param] = {}開始工作時,通過advancedParams = {}綁定數組,但第二個綁定是advancedParams [param] = []。 – 2015-03-19 08:13:14

回答

2

這絕對是無效:

{cost: [from: "10"], [to: "200"]} 

因爲在一個數組中你不能將值與:分開。

而不是聲明一個數組[]你應該分配一個對象。

advancedParams = {}; 
advancedParams["cost"] = {}; 

請檢查下面的演示。

var advancedParams = {}; 
 
advancedParams["cost"] = {}; 
 
advancedParams["cost"]["from"] = 10; 
 
advancedParams["cost"]["to"] = 100; 
 

 
$.each(advancedParams, function(i, obj) { 
 
    console.log(obj); // results in "Object {from: 10, to: 100}" 
 
    $.each(obj, function(i, item) { 
 
    console.log(item); // results in "10, 100" 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

更新數組。只是我試圖更簡單地解釋。 – 2015-03-19 08:09:18

+0

是的。問題出在advancedParams [「cost」] = [] – 2015-03-19 08:15:31

0

你的對象定義它是無效的。請看下面的錯誤消息:

invalid object definition

儲存於這樣一個對象:var obj = { from: 10, to:200}。或者如果你想要一個對象數組,就像這樣做:var arr =[{from:10,to:200},{from:1, to:300}]