使用下划线将矩阵转换为javascript中的对象数组

时间:2014-08-28 20:25:47

标签: arrays underscore.js

我想转一个数组,如:

[[0,0], [1, 1], [2, 2]]

进入

[{Duration: 0, Title: 0}, {Duration: 1, Title: 1}, {Duration: 2, Title: 2}]

我在想做类似的事情:

var a = [[0,0], [1, 1], [2, 2]];

_.map(a, function() {return {Duration: , Title: }   });

但是我无法引用我循环的当前值。最简单的方法是什么?

2 个答案:

答案 0 :(得分:2)

回调函数有一个参数,当前元素(这里是一个数组):

_.map(a, function (data) {return {Duration: data[0], Title: data[1]} });

更新:制作动态按键

您可以使用下划线函数each执行此操作,但我并不熟悉下划线:

var keys = ['Duration', 'Title'],
    res;

res = _.map(a, function (data, dataIndex) {
    var hashMap = {};

    _.each(keys, function (key, keyIndex) {
        hashMap[key] = data[keyIndex];
    });

    return hashMap;
});

答案 1 :(得分:2)

Underscore的map函数接受一个数组并返回一个新数组。您可以按照自己的意愿进行映射。

var a = [[0,0], [1, 1], [2, 2]];
var b = _.map(a, function(row) {
  return { "Duration" : row[0], "Title" : row[1] };
})

如果你想动态地填写这些字段,你可以这样做! Javascript很有趣。

var a = [[0,0,4], [1, 1, 5], [2, 2, 6]];
var fields = ["Duration","Title","other"];
var b = _.map(a, function(row) {
  return _.object(fields, row);
})

以下是 plunk ,您可以自行试验。