如何移除对象属性名中的_demo?现有JS代码无效求解决方案
解决对象列表属性名移除“_demo”的问题
你的原代码没生效,核心问题有两个:
da.replace('_demo','')只返回了修改后的字符串,但没把这个新字符串用起来——da是属性名的副本,replace也不会修改原字符串- 没有对原对象做实际修改:既没删除旧属性,也没添加修改后的新属性
给你两种可行的解决方式:
方式一:直接修改原对象列表
datalist.forEach((data) => { // 先把所有属性名存成数组,避免遍历原对象时属性变化影响循环 const keys = Object.keys(data); keys.forEach(key => { if (key.includes('_demo')) { const newKey = key.replace('_demo', ''); // 把旧属性的值转移到新属性 data[newKey] = data[key]; // 删除原来的旧属性 delete data[key]; } }); });
方式二:生成新的对象列表(不修改原数据)
如果不想改动原数组里的对象,可以用map生成新列表:
const newDatalist = datalist.map(data => { const newObj = {}; Object.keys(data).forEach(key => { // 直接替换属性名里的_demo,不管有没有都处理 const newKey = key.replace('_demo', ''); newObj[newKey] = data[key]; }); return newObj; });
内容的提问来源于stack exchange,提问作者John N
相关产品推荐
相关产品推荐

