2017-08-14 96 views
0

我有一個字符串數組,我想將它轉換爲對象數組。使用es6或lodash將字符串數組轉換爲對象數組

array = ['a', 'b', 'c']; 

我要生成

array= [ 
    {'name': 'a', 'isChecked': false, 'availibility': 0 }, 
    {'name': 'b', 'isChecked': false, 'availibility': 0 }, 
    {'name': 'b', 'isChecked': false, 'availibility': 0 } 
]; 

我下面仍然返回originalArray試過!

array.map((name) => ({ 
    name, 
    isChecked: false, 
    availability: 0 
})); 

你會如何做到這一點?

+6

map不改變原始數組,但返回一個新數組。 – ASDFGerte

回答

2

您需要使用以下內容,因爲@ASDFGerte指出,map不會修改原始對象,而是返回一個新的對象,您應該將其分配給一個變量。在這種情況下,我只是將它分配回原始的array變量。

var array = ['a', 'b', 'c']; 
 

 
array = array.map((name) => ({ 
 
    name, 
 
    isChecked: false, 
 
    availability: 0 
 
})); 
 

 
console.log(array);

3

您可以使用map這樣的:

array= ['a', 'b', 'c']; 
 
let newArr = array.map(item => { 
 
    return { 
 
    'name': item, 
 
    'isChecked': false, 
 
    'availibility': 0 
 
    } 
 
}) 
 

 
console.log(newArr);

2

map()作品如預期,但它並返回一個新的數組。如果你想變異原始數組,使用forEach()

array.forEach((val, i) => array[i] = { 
    name: val, 
    isChecked: false, 
    availability: 0 
}) 
1

老式的方法:

var outputArray = []; 
var inputArray = ['a', 'b', 'c']; 
for (var i=0, len = inputArray.length; i < len; i++) { 
    outputArray.push({ 
      name : inputArray[i], 
      isChecked : false, 
      availability : 0 
    }); 
} 

如果你想使用map()你需要存儲在新的數組對象。

相關問題