来自javascript中具有键值对的数组的键值对

时间:2014-06-10 13:31:44

标签: javascript arrays json underscore.js

我有一个这样的数组:

var arrayTemp = [
{"0":["Z",59]},
{"1":["D",53]},
{"2":["6",26]},
{"3":["3",19]},
{"4":["Y",10]},
{"5":["H",7]},
{"6":["G",5]},
{"7":["2",5]}
];

我需要一个类似于下面的输出,

var arrayTemp = [
{"Z":59},
{"D":53},
{"6":26},
{"3":19},
{"Y":10},
{"H":7},
{"G":5},
{"2":5}
];

我如何实现这一目标?我希望在json,下划线或JavaScript的帮助下实现这一目标。

3 个答案:

答案 0 :(得分:2)

使用Array.prototype.map(),您可以迭代原始数组的每个元素并创建所需的对象,并将它们作为新数组返回到新数组中。

var newArray = arrayTemp.map(function(e, index) { 
    var x = {};
    x[e[index][0]] = e[index][1];

    return x;
})

DEMO - 使用Array.prototype.map()创建新数组


答案 1 :(得分:0)

这样的事情:

var newArray = arrayTemp.map(function(e) { 
    var index = Object.keys(e).shift(),
        innerElement = e[index],
        ret = {};

    ret[innerElement[0]] = innerElement[1];
    return ret;
})

JsFiddle进行测试。

答案 2 :(得分:0)

使用下划线:

var newArr = _.map(arrayTemp, function(item){
    for (var i in item){
       var o = {};
       o[item[i][0]] = item[i][1];
       return o;
    }
});

尽管@François_Wahl的解决方案在使用原生Array.prototype.map()方面更受尊重。