Я хочу изменить это

var data = [60, rose, 40, rose1, 20, rose2];

К этому

var data: [{
  value: 60,
  name: 'rose'
}, {
  value: 40,
  name: 'rose1'
}, {
  value: 20,
  name: 'rose2'
}];
4
Syafiq apit 23 Дек 2015 в 15:57

2 ответа

Лучший ответ

Сделать это можно так:

var data = [60, "rose", 40, "rose1", 20, "rose2"]

var dataObj = []
for (var i = 0; i < data.length; i+=2) {
  dataObj.push({
    value: data[i],
    name: data[i + 1]
  })
}

// Demo Output
document.write(JSON.stringify(dataObj))
5
CoderPi 23 Дек 2015 в 13:45

Для полноты картины работает даже для неровных предметов:

var data = [60, "rose", 40, "rose1", 20, "rose2", 30],
    object = data.reduce(function (r, a, i, d) {
        if (i % 2) {
            r[d[i - 1]] = a;
        }
        return r;
    }, {});

document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
1
Nina Scholz 23 Дек 2015 в 22:28