簡體   English   中英

jQuery .each()創建對象數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM