[英]jQuery .each() creating object array
我的目標是能夠生成完全像這樣的東西。
var data = google.visualization.arrayToDataTable([
['Year', 'Cost'],
['2004', 1000],
['2005', 1170],
['2006', 660],
['2007', 1030]
]);
但是我試圖通過使用JSON生成的數據來完成它
{
"uid": 1,
"name": "Cost",
"data": [
{
"year": 2009,
"cost": 640
},
{
"year": 2010,
"cost": 620
},
{
"year": 2011,
"cost": 600
},
{
"year": 2012,
"cost": 620
}
]
}
並通過使用此jQuery
$.getJSON("js/cost.json", function(d) {
console.log(d.data);
var items = [];
$.each( d.data, function( k, v ) {
console.log(v.cost);
console.log(v.year);
items.push("['"+v.year+"',"+v.cost+"]");
});
console.log(items);
});
但是我要注意的是將其作為字符串推送,將對象推送到數組的正確方法是什么,這樣我才能使它正常工作。
當前,您正在創建一個字符串,然后推送到數組。
采用
items.push([v.year, v.cost]);
代替
items.push("['"+v.year+"',"+v.cost+"]");
.map
比.each
更好。
$.getJSON("js/cost.json", function(d) {
var items = $.map(d.data, function(v) {
return [[v.year, v.cost]];
});
});
數據將作為字符串推送,因為您正在將字符串傳遞給items.push
。 如果需要數組,只需推送一個數組:
items.push([v.year, v.cost]);
這就是您需要做的。
從外觀v.year
,您希望year為字符串,而不是數字,因為您引用的是v.year
的值:
items.push("['" + v.year + "', " + v.cost + "]");
為此,只需使用JS的類型強制:
items.push([''+v.year, +(v.cost)]);
//concatenate with empty string => coerce to string
// +(someValue) coerces someValue to number
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.