2015-12-24 3 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); 

Пример: https://jsfiddle.net/DinoMyte/2s67pm8c/

1

Что вам нужно будет объединить массивы, можно сопоставить с массивами, используя этот фрагмент кода:

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

Что я сделал здесь, чтобы отобразить цвета массив в новый массив, содержащий соответствующее значение (одного и того же индекса) и присвоенный ему данным свойства объекта. Последний объект, который я преобразовал в строку, используя JSON.stringify().

1

Это сделать:

var data=[]; 
for(var i=0;i<colors.length;i++){ 
    data.push({color:colors[i], value:values[i]}); 
} 
Смежные вопросы