如何从JavaScript对象数组的键中删除字符?

问题描述

我有一个如下的javascript对象:

result = [
   {"Account_ID__r.Name":"Yahoo Inc Taiwan","Contact_ID__r.Email":"jvernold@thestar.com"},{"Account_ID__r.Name":"WXIA-TV","Contact_ID__r.Email":"jwoolbright@11e.com"}
]

我需要从对象的删除句点(。)。 (例如:键Account_ID__r.Name应该变成Account_ID__rName

上面的数组应如下所示:

result = [
   {"Account_ID__rName":"Yahoo Inc Taiwan","Contact_ID__rEmail":"jvernold@thestar.com"},{"Account_ID__rName":"WXIA-TV","Contact_ID__rEmail":"jwoolbright@11e.com"}
]

我尝试使用for (var key of Object.keys(result)) { }来构造一个新数组,但是没有用。

我尝试过的代码

result.forEach(item => {
                    for (var key of Object.keys(item)) {
                        var keyWithoutPeriod = key.replace(/\./g,'');
                        this.datatableData.push({
                            [keyWithoutPeriod]: item[key] 
                        });
                    }
                });

它的代码转换如下:

datatable = [
   {"Account_ID__rName":"Yahoo Inc Taiwan"},{"Contact_ID__rEmail":"jvernold@thestar.com"},{"Account_ID__rName":"WXIA-TV"},{"Contact_ID__rEmail":"jwoolbright@11e.com"}
]

这不是我需要的格式。请帮忙。谢谢?。

解决方法

您可以获取条目,替换不需要的字符并构建新对象。

const
    data = [
        { "Account_ID__r.Name": "Yahoo Inc Taiwan","Contact_ID__r.Email": "jvernold@thestar.com" },{ "Account_ID__r.Name": "WXIA-TV","Contact_ID__r.Email": "jwoolbright@11e.com" }
    ],result = data.map(o => Object.fromEntries(Object.entries(o).map(([k,v]) => [k.replace(/\./,''),v])));

console.log(result);