javascript - 根据需要将对象转换为合并对象
问题描述
我有一个如下对象:
{
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];
});
解决方案
您可以获取键的键和索引部分,然后获取新属性的拆分值数组,分配值并将数组连接到新属性。
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);
推荐阅读
- python - 使用字典值更新查询集
- node.js - AdminBro 捆绑“没有这样的文件或目录”错误
- c# - C# Linq 从模型状态中删除错误项不起作用
- php - 在 laravel 中无法以模态获取数据源
- swift - 符合 Objective-C 中的可识别性
- flutter - 坏:流:FirebaseAuth.instance.authStateChanges(),
- javascript - 使用带有文字字符串的逻辑或运算符时如何获得警告/错误
- spring-boot - @EmbeddedId 具有额外的 String 属性时未创建表
- python - Selenium Python 性能日志:获取类似网页测试的统计信息?
- html - 如何将第二行中的文本从第一行单词的下方开始对齐。(不在 i 标签下方)