以下是相关代码:
let schools = [
{ name: "Yorktown"},
{ name: "Stratford"},
{ name: "Washington & Lee"},
{ name: "Wakefield" }
];
const editName = (oldName, name, arr) => {
return arr.map(item => {
if (item.name === oldName) {
return Object.assign({}, {newName: name});
} else {
return item
}
})
};
let updatedSchools = editName("Stratford", "HB Woodlawn", schools);
console.log(updatedSchools," --> updatedSchools");
console.log(schools," --> schools");
没什么特别的。但是,假设我想为Object.assign设置密钥,我传入的内容。这里,我选择的值是“newName”;当然,通常情况下,人们只会使用完全相同的密钥,甚至不必费心创建新密钥(也就是说,我只会说:
return Object.assign({}, {name})
但是,如果我想传递一些内容。这会带来一个有趣的(我猜这是有争议的)问题:关键是什么?它不是真正的字符串...所以它会如何工作?我试图解决这个问题有望解释我想说的话:
let schools = [
{ name: "Yorktown"},
{ name: "Stratford"},
{ name: "Washington & Lee"},
{ name: "Wakefield" }
];
const editName = (oldName, name, arr, newKey = name) => {
return arr.map(item => {
if (item.name === oldName) {
return Object.assign({}, {newKey: name});
} else {
return item
}
})
};
let updatedSchools = editName("Stratford", "HB Woodlawn", schools, "bear");
console.log(updatedSchools," --> updatedSchools");
console.log(schools," --> schools");
正如你所看到的,我已经传入了“bear”作为我的newKey(如果没有给出键,则使用默认参数)。但是,这不起作用;而不是“熊”我只是得到字符串/标签newKey。我尝试使用模板字符串等解决这个问题,但我似乎无法为新密钥插入传入的值。我想这可能不可能......但也许某人有一些想法?也许与Json.stringify()或其他东西有关......?
几乎只是一个好奇的问题,但如果有人有一些想法,我会很感激反馈。感谢。