无法替换Javascript中对象数组的键

Unable to replace key for an array of objects in Javascript

本文关键字:数组 对象 替换 Javascript      更新时间:2023-09-26

我有一个对象数组,需要重命名键。

这是我的方法:

将对象数组转换为JSON,替换密钥,然后执行JSON.parse

用newKey替换oldKey失败,因为这是一个数组!

这是我的JSON字符串。

str "[{'"194240_0900217'":'"500'"},{'"194242_0900294'":'"600'"}]"

我需要这样:

str "[{'"194240'":'"500'"},{'"194242'":'"600'"}]"

有没有其他更好的方法来实现这一点?

这是Regex

  var str="[{'"194240_0900217'":'"500'"},{'"194242_0900294'":'"600'"}]"
  var a=str.replace(/(_'d+)/g,"")
  console.log(a); 
// [{"194240":"500"},{"194242":"600"}]

一个jsfiddle

使用for in循环,在添加替换属性后使用delete,或者在阅读"如何从JavaScript对象中删除属性"后,根据您的偏好将旧属性设置为undefined

var data = {
    "194240_0900217": "500",
    "194242_0900294": "600"
};
var k,
    matches;
console.log(data);
for (k in data) {
    if (data.hasOwnProperty(k)) {
        matches = k.match(/('d+)_'d+/);
        if (matches) {
            data[matches[1]] = data[k];
            delete data[k];
        }
    }
}
console.log(data);

此打印:

{ '194240_0900217': '500', '194242_0900294': '600' }
{ '194240': '500', '194242': '600' }