如何移除JavaScript对象中所有键名的首字符?
解决方案
报错原因
你的赋值语句逻辑完全颠倒,且左值不符合JS语法要求:
data[k].substring(1)是字符串处理后的临时返回值,不是可被赋值的变量或对象属性,JS不允许给这类临时计算结果赋值- 你需要修改的是对象的键名而非键值,上述代码操作的是键值,完全偏离需求
实现方案
方案1:直接修改原对象
for(let k in data) { // 仅处理下划线开头的键,兼容其他正常键名 if(k.startsWith('_')) { const newKey = k.substring(1) // 给新键赋值原键对应的数值 data[newKey] = data[k] // 删除旧的带下划线的键 delete data[k] } } console.log(data)
方案2:生成新对象,不污染原始数据
const newData = Object.fromEntries( Object.entries(data).map(([key, value]) => { return [key.startsWith('_') ? key.substring(1) : key, value] }) ) console.log(newData)
两种方案处理后的最终数据结构均为:
{ batch: "Batch", canDelete: true, client: "me", extension: "MP4", type: "video/mp4" }
内容的提问来源于stack exchange,提问作者yellowSub
相关产品推荐
相关产品推荐

