如何将数组对象转换为对象数组?

时间:2013-10-15 11:43:48

标签: javascript jquery arrays

我有一个数组的对象说

obj_of_arr = {a : [1,2], b:["foo","bar"]}

我想把它变成等价的对象数组

arr_of_obj = [{a:1,b:"foo"},{a:2,b:"bar"}]

实现这一目标的最优雅方式是什么?我可以“暴力”,但我想知道是否有一种优雅的方式。如果它涉及jQuery,那很好。

1 个答案:

答案 0 :(得分:1)

为什么不用两个循环呢?

注意:如果这是您谈到的“蛮力”方式,那么我不知道如何帮助您。即使有一些jQuery(或其他框架)函数执行此操作,它可能在内部使用类似的构造,因为这些框架通常没有任何神奇的力量可以让它们更快或更有效。

Preview (JSBin)

function obj_to_arr(obj_of_arr) {
    var objects = [];

    for (var prop in obj_of_arr) {
        for (var i = 0; i < obj_of_arr[prop].length; i++) {
            if (typeof(objects[i]) != "object") {
                objects[i] = {};
            }
            objects[i][prop] = obj_of_arr[prop][i];
        }
    }

    return objects;
}