Rit*_*ito 5 javascript arrays ecmascript-6 es6-map
我正在尝试在ES6中对此进行编码。以下是我要实现的目标。假设我有一个名为的对象数组schools
。
let schools = [
{name: 'YorkTown', country: 'Spain'},
{name: 'Stanford', country: 'USA'},
{name: 'Gymnasium Achern', country: 'Germany'}
];
Run Code Online (Sandbox Code Playgroud)
现在,我想编写一个函数editSchoolName
,该函数将带有3个参数schools
(这是我在上面定义的数组)oldName
和name
。
我将在参数中传递学校的名称,oldName
并且该名称应使用参数中的值进行更新name
。
我不想更改变量的状态,schools
因此我正在使用一个map
函数,该函数将返回具有更改的新数组。
该editSchoolName
函数将这样调用-
var updatedSchools = editSchoolName(schools, "YorkTown", "New Gen");
Run Code Online (Sandbox Code Playgroud)
在此,名称YorkTown
应替换为name New Gen
。因此,数组的期望值updatedSchools
应为-
let updatedSchools = [
{name: 'New Gen', country: 'Spain'},
{name: 'Stanford', country: 'USA'},
{name: 'Gymnasium Achern', country: 'Germany'}
];
Run Code Online (Sandbox Code Playgroud)
这就是我的editSchoolName函数的样子-
const editSchoolName = (schools, oldName, name) =>
schools.map(item => {
if (item.name === oldName) {
/* This is the part where I need the logic */
} else {
return item;
}
});
Run Code Online (Sandbox Code Playgroud)
需要帮助进行editSchoolName
功能更改以实现上述期望结果。
Rah*_*rma 21
试试这个,ES6Object.assign()
创建数组元素的副本并更新新对象。
let schools = [{
name: 'YorkTown',
country: 'Spain'
},
{
name: 'Stanford',
country: 'USA'
},
{
name: 'Gymnasium Achern',
country: 'Germany'
}
];
const editSchoolName = (schools, oldName, name) => {
return schools.map(item => {
var temp = Object.assign({}, item);
if (temp.name === oldName) {
temp.name = name;
}
return temp;
});
}
var updatedSchools = editSchoolName(schools, "YorkTown", "New Gen");
console.log(updatedSchools);
console.log(schools);
Run Code Online (Sandbox Code Playgroud)
klu*_*gjo 12
您需要返回更新后的对象:
const editSchoolName = (schools, oldName, name) =>
schools.map(item => {
if (item.name === oldName) {
return {...item, name};
} else {
return item;
}
});
Run Code Online (Sandbox Code Playgroud)
const editSchoolName = (schools, oldName, newName) =>
schools.map(({name, ...school }) => ({ ...school, name: oldName === name ? newName : name }));
Run Code Online (Sandbox Code Playgroud)
您可以通过使用三元来缩短它。
归档时间: |
|
查看次数: |
14819 次 |
最近记录: |