此函数循环遍历一个对象数组,并将一个对象作为第二个参数。
如果firstname
值匹配,它将循环遍历对象数组,并将对象作为第二个参数传入。
我确信有一种更好的方法可以使用ES6扩展运算符来实现此功能,但我在实现它时遇到了麻烦。
const foo = (arr, obj) => {
const tempArray = arr.map((item, i) => {
if ( arr[i].name === obj.name ) {
return obj
} else {
return arr[i]
}
})
return tempArray
}
const arrOfObjx = [
{
"name": "Joe",
"favMovie": "Rambo"
},
{
"name": "Jane",
"favMovie": "The Matrix"
},
{
"name": "John",
"favMovie": "Star Wars"
}
]
const newJoe = {
"name": "Joe",
"favMovie": "ROCKY"
}
console.log(foo(arrOfObjx, newJoe ))

答案 0 :(得分:2)
不,这里的扩展运营商没有用例。要做的简化是删除tempArray
变量并使用item
而不是arr[i]
:
function foo(arr, obj) {
return arr.map((item, i) => {
if ( item.name === obj.name ) {
return obj
} else {
return item
}
});
}
你可以进一步缩短到
const foo = (arr, obj) =>
arr.map(item =>
item.name === obj.name ? obj : item
);
答案 1 :(得分:1)
尝试使用项目
const tempArray = arr.map((item, i) => {
if (item.name === obj.name) {
return obj
} else {
return item
}
})
我认为你甚至可以把它写成
const tempArray = arr.map((item, i) => {
return (item.name === obj.name ? obj : item)
})