Underscore.js - 使用相同键对象的数组

时间:2016-02-15 17:42:59

标签: javascript angularjs underscore.js

我需要转换它:

"colors":["pink", "Blue"]

或只是这个

["pink", "Blue"]

进入这个

[{ colors: "pink" }, { colors: "blue" }]

以便能够在AngularJS中使用它。有没有办法用underscore.js做到这一点?提前谢谢!

3 个答案:

答案 0 :(得分:6)

Underscore提供了_.map()方法,可让您完成您正在寻找的内容。

var arr = ['pink','blue'];
var hash = _.map(arr, function(color){ return {colors: color};});

但是,undercore的map方法只是javascript中原生Array#map方法的一个瘦包装器,可以按如下方式使用:

var arr = ['pink', 'blue'];
var hash = arr.map(function(color){ return {colors: color}; });

答案 1 :(得分:2)

var newArray = new Array();
colors.forEach(function(item) {
    newArray.push({colors: item});
});

答案 2 :(得分:1)

通常,如果您有这样的对象:

var obj = {
   key1: ['val1_1', 'val1_2'],
   key2: ['val2_1', 'val2_2']
}

你希望得到这样的东西:

var arr = [{key1: 'val1_1'}, {key1: 'val1_2'}, {key2: 'val2_1'}, {key2: 'val2_2'}]

出来了。

var arr = Object.keys(obj).map(function(key){
    return obj[key].map(function(item){
        var result = {};
        result[key] = item;
        return result;
    })
}).reduce(function(prevArray, newArray){
   return prevArray.concat(newArray);
}, []);

或者如果您希望结果如下:

var arr = [[{key1: 'val1_1'}, {key1: 'val1_2'}], [{key2: 'val2_1'}, {key2: 'val2_2'}]]

只需删除连接所有数组的最后一部分(.reduce(...))。