es6マップを使用してオブジェクトの配列のプロパティ値を更新しようとしました。私の論理に何が問題なの?これは、結果を新しい配列を作成します -別のオブジェクトプロパティ値のオブジェクトプロパティ値の更新が失敗しました
this.state = {
"fruits":[
{"name":"banana","value":true},
{"name":"watermelon","value":false},
{"name":"lemon","value":false}
]
}
const key = 'lemon';
const newFruitsData = this.state.fruits.map(obj =>
obj.name === key ? obj.value = true : ''
)
console.log(newFruitsData)
は、私はあなたがArray.prototype.map[Array.prototype.map]
// demonstrates how to use ES6 MAP - The Map object is a simple key/value object.
var fruits= new Map();
fruits.set('banana', true);
fruits.set('apple', false);
for (var [key, value] of fruits) {
console.log(key + ' = ' + value);
}
でES6 map を混合しているhttp://jsbin.com/jagononuwe/1/edit?js,console,output
'obj.name ===キーのどこかに': 'は必要ありませんか? obj [key] .value = true'?なぜobj.valueではなくobj [key] .value'を設定していますか? –
@MikeSamuelも動作しません。http://jsbin.com/jagononuwe/1/edit?js,console,output – Mellisa
さて、オブジェクトをそのプロパティの1つまたは空の文字列にマッピングするので、setStateあなたの状態を吹き飛ばします。 –