首页 > 解决方案 > 根据需要将对象转换为合并对象

问题描述

我有一个如下对象:

{
   departments[0]: "Pricing",
   departments[1]: "Technology",
   locations[0]: "Berlin",
} 

我想把它转换成

{
    departments: "Pricing, Technology",
    locations: "Berlin"
}

如果对象已经处于所需状态,它也应该保持不变。

任何帮助,将不胜感激。我无法解决这个问题。

我正在尝试以下内容:

let tempkey= '';
Object.keys(temp1).forEach(key => {
    if(key.indexOf('[') !== -1) {
        tempkey = // then do substring and remove last three characters
    }
  let value = temp1[key];

});

在此处输入图像描述

标签: javascriptobjectecmascript-6

解决方案


您可以获取键的键和索引部分,然后获取新属性的拆分值数组,分配值并将数组连接到新属性。

var object = { 'departments[0]': "Pricing", 'departments[1]': "Technology", 'locations[0]': "Berlin", "state": "York" },
    result = Object.entries(object).reduce((o, [k, v]) => {
        var match = k.match(/([^\[]+)\[([^\]]+)\]/);
        if(match){
            var [key, index] = match.slice(1),
            temp = (o[key] || '').split(', ');          
            temp[index] = v;
            o[key] = temp.join(', ');            
            return o;
        } else {
            o[k] = v;
            return o;
        };
    }, {});

console.log(result);


推荐阅读