2015-05-25 51 views
-2

我有一個Javascript數組具有多個陣列的內部,這樣的:映射數組值到對象基於關鍵

var data = [ 
    ['value1','value2','value3'], 
    ['value1','value2','value3'], 
    ['value1','value2','value3'], 
    ['value1','value2','value3'] 
]; 

我也有另一個數組具有用於這些值的鍵:

var key = ['width', 'height', 'depth']; 

什麼是循環訪問data數組並將這些值映射到其各自的鍵的最佳方法,返回一個對象?

例子:

function(data, key) { 
    /* 
    var newObject = { 
    {width: 'value1', height: 'value2', 'depth': 'value3'}, 
    {width: 'value1', height: 'value2', 'depth': 'value3'}, 
    {width: 'value1', height: 'value2', 'depth': 'value3'}, 
    {width: 'value1', height: 'value2', 'depth': 'value3'} 
    } 
    return newObject; 
    */ 
} 

**編輯:

我誤最初提出的問題是試圖映射對象內部陣列,它應該是陣列的內部陣列。現在的問題應該正確反映我的問題。

+2

這看起來並不像有效的語法。修復後,請查看[map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)。 – elclanrs

+1

*「我有一個Javascript對象,裏面有一些數組」*這不是有效的JS。你有一個數組的數組呢?有多種方法可以迭代集合:'for','for/in','Array#.map','Array#forEach'。本身並沒有「最好」的方式,使用任何最能理解的方式。你有沒有嘗試過任何東西? –

+1

@ user4703663:你應該讓OP澄清他們的問題。 –

回答

1

var data = [ 
 
    ['value1','value2','value3'], 
 
    ['value1','value2','value3'], 
 
    ['value1','value2','value3'], 
 
    ['value1','value2','value3'] 
 
]; 
 

 
var keys = ['width', 'height', 'depth']; 
 

 
var obj = []; 
 
for(var i = 0; i < data.length; i++) { 
 
    for(var j = 0; j < keys.length; j++) { 
 
    if(obj[i] == undefined) { 
 
     obj[i] = [] 
 
     obj[i][keys[j]] = data[i][j]; 
 
    } else { 
 
     obj[i][keys[j]] = data[i][j]; 
 
    } 
 
    } 
 
} 
 

 
console.log(obj);

+0

這將返回一個數組,我想返回一個包含對象的對象。 – Himmel

+0

散列的鍵應該是uniq。上面的例子語法無效,你可以嘗試取消它的註釋,並且據我所知,它必須是散列數組。 –