Javascript中合并两个字典对象时的换行问题
我花了一些时间寻找答案,并实施了许多解决方案,但都不起作用。基本上,我在javascript中有两个dictionary对象,当我使用console.log时,它们如下所示:Javascript中合并两个字典对象时的换行问题,javascript,Javascript,我花了一些时间寻找答案,并实施了许多解决方案,但都不起作用。基本上,我在javascript中有两个dictionary对象,当我使用console.log时,它们如下所示: obj1 = {"\n key1\n ":["\n a\n ","\n b\n "], "\n key2\n":["\n f\n ","\n e\n"], "\n key3\n ":["\n fda\n", "\n das\n"]} obj2 = {"key2":["h","
obj1 = {"\n key1\n ":["\n a\n ","\n b\n "], "\n key2\n":["\n f\n ","\n e\n"], "\n key3\n ":["\n fda\n", "\n das\n"]}
obj2 = {"key2":["h","k","z"], "key3":["zzz","bbb"}
我想将这两个对象合并到以下对象中:
obj3 = {"key1":["a","b"], "key2":["f","e","h", "k","z"], "key3":["fda", "das","zzz","bbb"]}
我尝试使用:
obj3= Object.assign({},obj1, obj2);
但结果是:
obj3 = {"\n key1\n ":["\n a\n ","\n b\n "], "\n key2\n":["\n f\n ","\n e\n"], "\n key3\n ":["\n fda\n", "\n das\n"], "key2":["h","k","z"], "key3":["zzz","bbb"]}
很明显,由于这些换行符,键不匹配。我尝试编写一个循环来删除换行符,但没有成功:
function linebreak(obj) {
for (var key in obj) {
obj[key].toString().replace(/\n/g, "");
}
}
linebreak(obj1)
功能饰件可在以下方面提供帮助:
var str=\n key1\n;
var trimmedStr=str.trim;
console.logstr;
控制台。logstr.trim 测试用例
obj1 = {
"\n key1\n ": ["\n a\n ", "\n b\n "],
"\n key2\n": ["\n f\n ", "\n e\n"],
"\n key3\n ": ["\n fda\n", "\n das\n"] }
obj2 = {"key2":["h","k","z"], "key3":["zzz","bbb"]}
=> key1: (2) ["a", "b"]
key2: (5) ["f", "e", "h", "k", "z"]
key3: (4) ["fda", "das", "zzz", "bbb"]
希望能有帮助
result = {}
for (var obj in obj1) {
let key = obj.toString().match(/key[0-99]/)[0];
let values = obj1[obj].map((post) => post.toString().match(/\w+/)[0]);
if (!result.hasOwnProperty(key)){
result[key] = [... values];
}
else {
result[key].push(... values);
}
}
for (var obj in obj2) {
let key = obj.toString().match(/key[0-99]/)[0];
let values = obj2[obj].map((post) => post.toString().match(/\w+/)[0]);
if (!result.hasOwnProperty(key)){
result[key] = [... values];
}
else {
result[key].push(... values);
}
}
console.log(result)
可以修剪格式错误的对象中的所有键和值,并使用匹配键连接数组: const obj1={\n key1\n:[\n a\n\n b\n],\n key2\n:[\n f\n\n e\n],\n key3\n:[\n fda\n\n das\n]} 常量obj2={key2:[h,k,z],key3:[zzz,bbb]} 常量结果=Object.keysobj1 .reduceAC,键=>{ …acc, [键.微调]:obj1[键] .mapval=>val.trim .concatobj2[键.修剪]| |[] }, {};
console.logresultw您在哪里获取这些对象?我会在源头修复它,而不是在事后试图修复它…@来自仙境的异端猴子…@提姆可能来自外太空?要到达这些物体还有很长的路要走。是的,他们来自仙境。。。我宁愿在这里解决问题,也不愿一路回头:。请帮忙!!这类问题往往会累积起来。如果您现在只修复这个特定的客户端用例,那么使用相同数据或部分数据的其他用例也将需要修复。这里的问题是,对象的键是不可变的+替换不到位。如果能正确地用于这个案例,修剪本身将是一个很好的解决方案。我需要将/n替换到位。但我现在有了一个解决办法。谢谢:谢谢你的代码。我遇到了无法读取属性0的null错误。但我现在从下面得到了一个解决方案:您能帮我进一步吗?因为代码设计有问题。与我的示例中的所有键一样,它可以完美地处理具有多个值的键。但是,如果我在obj1\n key4\n:[\n value4\n]中插入一个只有一个值的键,我会遇到错误:object.map不是函数。我试着像这样修复它:Array.prototype.slice.callobj1[key].mapval=>val.trim然而,这个修复最终将该键的单个值标记化,以便将其转换为数组键4:[,v,a,l,u,e,4],我非常感谢!!!