2017-09-28 104 views
-3

我有以下對象,我需要轉換成略有不同的格式。我很確定我可以使用節點本地map函數來翻譯它。例如在nodeJS中翻譯對象

var animals = [ 
 
    [ 'cats', 1726, 1143, 10, 105, 2382, 0 ], 
 
    [ 'dogs', 640, 0, 0, 0, 0, 0 ], 
 
    [ 'cows' 13509, 0, 3, 1, 196939, 19 ], 
 
    [ 'sheep', 1573, 1084, 10, 105, 2266, 0 ] 
 
      ]

成這種格式:

new_animals = [{ 
 
    name: 'cats', 
 
    data: [1726, 1143, 10, 105, 2382, 0] 
 
    }, { 
 
    name: 'dogs', 
 
    data: [640, 0, 0, 0, 0, 0] 
 
    }, { 
 
    name: 'cows', 
 
    data: [13509, 0, 3, 1, 196939, 19] 
 
    }, 
 
    { 
 
    name: 'sheep', 
 
    data: [1573, 1084, 10, 105, 2266, 0] 
 
    }]

+0

你最肯定能夠。你試過了嗎?而值得一提的是,'map'內置於JavaScript中,它不是Node.js的東西。 –

回答

1

使用ES2015特點:

const newAnimals = animals.map(([name, ...data]) => ({ name, data })); 

沒有ES2015特點:

var newAnimals = animals.map(function (animal) { 
    return { 
    name: animal[0], 
    data: animal.slice(1) 
    }; 
}); 
+0

這就是我添加第二個版本的原因。第一個是非常簡潔,但也很難理解,因爲它使用了很多新功能。 – PeterMader

0

它其實很簡單:

var animals = [ 
 
    ['cats', 1726, 1143, 10, 105, 2382, 0], 
 
    ['dogs', 640, 0, 0, 0, 0, 0], 
 
    ['cows', 13509, 0, 3, 1, 196939, 19], 
 
    ['sheep', 1573, 1084, 10, 105, 2266, 0] 
 
]; 
 

 
console.log(animals.map(([name, ...data]) => ({name, data})));

的選擇,如果您的節點版本不支持lambda表達式:

​​