TypeScript中如何移除对象数组中键名的方括号?
直接修改对象数组中entries的键名(移除方括号)
你之前的问题出在:只处理了键名的字符串替换,但没真正修改原对象的属性——要改变原entries对象的键,必须添加新键并赋值,再删除旧键,这样才能让原数组的内容同步更新。
可以直接修改原data数组,不需要创建新变量,具体代码如下:
// 原始数据 const data = [ {title: "Title1", entries: { 'Entry1': 333333, '[ABC]Entry2': 1234, 'Entry3': 5555 }}, {title: "Title2", entries: { '[ABC]Entry1': 5555, 'Entry2': 4444,'Entry3': 2222 }} ]; // 遍历每个数组元素 data.forEach(item => { // 获取当前entries的所有键名 const keys = Object.keys(item.entries); keys.forEach(oldKey => { // 移除所有方括号生成新键名 const newKey = oldKey.replace(/\[|\]/g, ''); // 仅当键名有变化时执行修改 if (newKey !== oldKey) { // 把旧键的值转移到新键 item.entries[newKey] = item.entries[oldKey]; // 删除旧键 delete item.entries[oldKey]; } }); }); // 此时打印data就能看到更新后的结果 console.log(data);
这段代码的逻辑是:
- 遍历
data数组里的每个对象 - 对每个对象的
entries属性,逐个处理它的键名 - 用正则表达式替换掉键名里的所有
[和],生成新键 - 将旧键对应的值赋给新键,再删除旧键,直接修改原
entries对象
执行后,原data数组的内容就会直接更新,无需额外存储新变量。
内容的提问来源于stack exchange,提问作者AMR
相关产品推荐
相关产品推荐

