2014-08-28 38 views
2

我想打開一個數組如:談到矩陣爲對象的數組中的JavaScript和下劃線

[[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

回調函數給出一個參數,當前元素(這裏的數組):

_.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

如果我有['Duration','Title','etc']這樣的值的數組,那麼我需要動態設置對象值呢?我應該在這張地圖內放置另一張地圖嗎?謝謝,我會在時間結束時檢查。 – user1413969 2014-08-28 20:34:58

+0

讓我更新我的答案! – axelduch 2014-08-28 20:39:00

+0

@ user1413969 done – axelduch 2014-08-28 20:54:51

2

下劃線的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您可以派生自己動手試驗了。

+0

謝謝,我真的很感激它!我會仔細閱讀代碼。我鼓勵你,但會檢查aduch,因爲他在技術上首先回答了問題。 – user1413969 2014-08-28 20:44:34

+0

@Jess很好,這似乎比我的答案更新更合理 – axelduch 2014-08-28 20:57:42