2017-08-14 13 views
0

オブジェクトの配列に変換する文字列の配列があります。es6またはlodashを使用して文字列の配列をオブジェクトの配列に変換します。

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

は、私は以下とまだoriginalArrayを返す試みた

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

を生成したいです!

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

どうすればよいですか?

+6

'map'は元の配列に変更を加えませんが、新しい配列を返します。 – ASDFGerte

答えて

2

@ASDFGerteが指摘しているように、mapは元のオブジェクトを変更せず、変数に割り当てるべき新しいオブジェクトを返しますので、以下を使用する必要があります。この場合、私はそれを元のarray変数に割り当て直しました。予想通り

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

 
console.log(newArr);

3

あなたはこのようmapを使用することができます。あなたがmap()を使用する場合は、新しい配列にオブジェクトを格納する必要が

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 
    }); 
} 

:あなたは、元の配列を変化させたい場合は、forEach()

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

あなたmap()作品が、それは新しい配列を返すん:

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

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

 
console.log(array);

1

昔ながらの方法を使用します。

関連する問題