2015-12-24 250 views
0

我在JavaScript中不太舒服。這個問題可能很愚蠢,但我找不到任何合適的解決方案。我有以下兩個數組。將JavaScript數組轉換爲JSON數據

colors = ['red', 'green', 'blue']; 
values = [20, 50, 100]; 

現在我想將其轉換成一個數據系列,像,

data: [{ 
    color: 'red', 
    value: 20, 
}, { 
    color: 'green', 
    value: 50, 
}, { 
    color: 'blue', 
    value: 100, 
}] 

我看着JSON.stringify()jQuery.param()功能,但尚不清楚如何做到這一點。

+0

JSON是數組或對象轉換爲文本,這樣您就可以將其發送到網絡上或將其放到一個文件中。它與將一個數據結構轉換爲另一個數據結構無關。 – Barmar

+0

謝謝你的回答和評論。這是我的錯誤。現在我明白我問了一個錯誤的問題。 'data','color','value'等是參數,而不是字符串。所以可能我正在尋找一個從數組中生成**參數值**組合的函數,並且可以在另一個[函數](https://jsfiddle.net/armikbd/2vdvur9L/)中使用。 – Iqbal

+1

你有3個答案,顯示如何做到這一點。沒有內置的功能可以做到這一點。 – Barmar

回答

1

爲了完成你需要什麼,你需要創建一個擁有來自colorsvalues元素的數組,匹配他們的index,然後應用JSON.stringify()這個新陣將其轉換成字符串。

var colors = ['red', 'green', 'blue']; 
var values = [20, 50, 100]; 

var data = []; 
$.each(colors,function(i) 
{ 
    data.push({'color' : colors[i], 'values' : values[i]}); 
}); 

var a = JSON.stringify(data); 
alert(a); 

例子:

var jsonData = 
{ 
    data: colors.map(function(color, index) { 
      return ({ color: color, value: values[index]}); 
     }) 
}; 
var jsonStringified = JSON.stringify(jsonData); 

我在這裏所做的是將顏色映射:https://jsfiddle.net/DinoMyte/2s67pm8c/

1

你需要的是在陣列組合,你可以使用這個片斷映射陣列數組轉換爲包含相應值(同一索引)的新數組並將其分配給對象屬性數據。 我使用JSON.stringify()將其轉換爲字符串的最終對象。

1

這將做到這一點:

var data=[]; 
for(var i=0;i<colors.length;i++){ 
    data.push({color:colors[i], value:values[i]}); 
}