Самый простой способ преобразовать объект JSON в недавно структурированный объект JSON? - PullRequest
1 голос
/ 01 декабря 2010

У меня есть объект JSON, который структурирован так:

{
    "xaxis": [
        "foo",
        "bar",
        "baz"
    ],
    "yaxis": [
        333,
        992,
        1365
    ]
}

Из него я хотел бы создать еще один объект JSON, структурированный так:

{ 
    "piegraph": [
        ["foo",333], 
        ["bar",992], 
        ["baz",1365]
    ] 
}

Выполнение этого преобразования в клиентском JavaScript избавило бы меня от дополнительных разработок и еще одного обхода сервера для получения, по сути, тех же данных.

Я могу использовать библиотеку jQuery, если это поможет.

Ответы [ 6 ]

2 голосов
/ 01 декабря 2010

Вы можете использовать Функциональный JavaScript :

second = { piegraph: Functional.zip([first.xaxis, first.yaxis]) };
1 голос
/ 01 декабря 2010

Это не сложно сделать вручную, но функциональная библиотека underscore.js имеет множество очень удобных функций, включая .zip():

var piegraph = _.zip( obj.xaxis, obj.yaxis );
1 голос
/ 01 декабря 2010

Предполагая, что ваша первая строка JSON уже проанализирована с объектом, вам просто нужно перебрать элементы любого из двух массивов, чтобы получить результат:

var result = { piegraph: [] }; // initialize piegraph as an empty array

var l = obj.xaxis.length;
while(l--) {
  result.piegraph[l] = [ obj.xaxis[l], obj.yaxis[l] ];
}

// result will look like this:
// {"piegraph":[["foo",333],["bar",992],["baz",1365]]}

Библиотеки не нужны, просто простой последовательный цикл. ;)

1 голос
/ 01 декабря 2010

Почему вы не можете просто использовать цикл for что-то вроде?

for(var i = 0; xaxis.length; i++){
  piegraph.push({xaxis[i], yaxis[i]);
}
0 голосов
/ 01 декабря 2010

Предположим, что array1 и array2 для осей x и y и resultArray, т.е. "piegraph"

jQuery.map(array1, function(item, i){
    resultArray.push(new Array(array[item, array2[i]));
}
});
0 голосов
/ 01 декабря 2010

Похоже, что вы хотите выполнить попарное сопоставление (также называемое "zipping") двух массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...