簡體   English   中英

如何使用來自多個javascript數組的信息構造一個json對象

[英]how to construct a json object using info from several javascript arrays

我已經有兩個js數組,例如:名稱和值(具有相同的長度),現在我想以某種格式構造一個json對象? 例如:

 names = ["label1","label2","label3"];
 values = [[[0,1],[1,9],[2,10]],[[0,89],[1,91],[2,1]],[[0,1],[1,9],[2,10]]];

我想使用以下格式的json數組data_spec

 [{
    label:"label1",
    data:[[0,1],[1,9],[2,10]]
  },
  {
    label:"label2",
    data:[[0,89],[1,91],[2,1]]
  },
  {
    label:"label3",
    data:[[0,1],[1,9],[2,10]]
  }]

誰能告訴一個人如何? 非常感謝!

對於一些變化和檢查,

var data_spec = [];
if (names.length != values.length) {
    // panic, throw an exception, log an error or just return an empty array
} else {
    for (var i=0, name; name = names[i]; i++) { // assuming a non-sparse array
        data_spec[i] = { 
            label : name, 
            data  : values[i] 
        };
    }
}

也就是說, 非稀疏並且不包含任何其他會評估為false的東西

如果您的框架已將每個函數添加到Array且您不關心性能,

var data_spec = [];
names.each(function(name) {
    data_spec.push({ label : name, data : values[names.indexOf(name)] });
});

如果您的框架是像Dojo這樣干凈的框架,並將其放在其他地方(例如Dojo),

var data_spec = [];
dojo.forEach(names, function(name) {
    data_spec.push({ label : name, data : values[names.indexOf(name)] });
});

如果您的框架中的每個函數都返回一個長度相同的數組,並且每個操作的結果都在預期位置,

var data_spec = arrayOfResultsEach(names, function(name) {
    return { label : name, data : values[names.indexOf(name)] };
});

這些只是為了說明,任意長度的內部循環的indexOf是主要的代碼味道。

只需使用一個循環(確保兩個數組的長度相同)

result = [];
for(var i=0, len=names.length; i < len; i++) {
    result.push({label: names[i], data: values[i]});
}
    var myArray = 
    [{
        "label": "label1",
        "data" : 
        {
            "0": "1",
            "1": "9",
            "2": "10"
        }
    },

    {
        "label": "label2",
        "data" : 
        {
            "0": "89",
            "1": "91",
            "2": "1"
        }
    },

    {
        "label": "label3",
        "data" : 
        {
            "0": "1",
            "1": "9",
            "2": "10"
        }
    }];

    alert(myArray[0].data[2]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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