如何在ES6中使用map函数实现修改指定学校名称的功能
使用ES6 Map函数实现学校名称修改函数
嘿,这事儿不难,用ES6的map()完全能搞定,而且还能保持代码的简洁和函数式风格~
首先明确核心思路:map()方法的作用就是遍历数组并返回一个新数组,每个元素可以根据我们的逻辑做转换。我们要做的就是在遍历每个学校对象时,判断它的名称是否匹配oldName,如果匹配就返回一个新的对象(避免修改原数据),把name换成新值;不匹配的话直接返回原对象就行。
下面是完整的实现代码:
let schools = [ {name: 'YorkTown', country: 'Spain'}, {name: 'Stanford', country: 'USA'}, {name: 'Gymnasium Achern', country: 'Germany'} ]; function editSchoolName(schools, oldName, newName) { return schools.map(school => { // 匹配到目标学校时,创建新对象替换name属性 if (school.name === oldName) { return {...school, name: newName}; } // 未匹配到则直接返回原对象 return school; }); }
几个关键点说明:
- 为什么用
{...school, name: newName}?这里用了ES6的对象扩展运算符,它会把原school对象的所有属性复制到新对象里,然后覆盖name属性为新值。这样做的好处是不会修改原数组里的原始对象,保持了数据的不可变性,这是现代JS开发的最佳实践之一。 map()返回的是一个全新的数组,原schools数组不会被改动,如果你需要更新后的数组,直接接收函数的返回值就行。
调用示例:
// 修改YorkTown的名称为York Town High const updatedSchools = editSchoolName(schools, 'YorkTown', 'York Town High'); console.log(updatedSchools); // 输出结果: // [ // {name: 'York Town High', country: 'Spain'}, // {name: 'Stanford', country: 'USA'}, // {name: 'Gymnasium Achern', country: 'Germany'} // ] // 原数组不受影响 console.log(schools); // 输出还是最初的数组内容
内容的提问来源于stack exchange,提问作者Rito
相关产品推荐
相关产品推荐

