我尝试使用.map()有条件地向数组中的对象添加一个属性,但似乎遗漏了一些东西。Map完成后,对象数组保持不变。所有这些都是尝试解决ESLint错误“no-param-reassign”的结果,如果这有助于理解我这样做的原因的话。
我已经做了一个基本的例子来说明我在这里要完成的工作:jsfiddle。
var aList = [{
Title: "Enders Game",
Rating: 8
},
{
Title: "Harry Potter",
Rating: 10
}];
console.log('before', aList);
aList.map(function(book) {
if(book.Title == "Enders Game"){
console.log({ ...book, completed: true })
return { ...book, completed: true };
}
console.log({ ...book, completed: false })
return { ...book, completed: false };
});
console.log('after', aList);
2条答案
按热度按时间shyt4zoc1#
您可以使用
Array#forEach
,因为您没有使用Array#map
的结果。第一个
对于一个全新的数组,你可以使用
Array#map
并use它的结果。对于添加一个新的属性到一个对象,你可以使用Object.assign
,它变异并返回对象的第一个参数。第一次
jvidinwx2#
我想,这样写起来会干净得多,可读性也强得多。