Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中的对象数组中合并具有相同键的对象_Javascript_Arrays_Javascript Objects_Ecmascript 5 - Fatal编程技术网

在javascript中的对象数组中合并具有相同键的对象

在javascript中的对象数组中合并具有相同键的对象,javascript,arrays,javascript-objects,ecmascript-5,Javascript,Arrays,Javascript Objects,Ecmascript 5,我有一个如下所示的对象数组。如果数组中有具有相同键值的对象,那么生成的数组应该包含ES5版本中这两个对象的组合 var arr = [ { "abc": [ { "name": "test", "addr": "123", } ] }, { "def": [ {

我有一个如下所示的对象数组。如果数组中有具有相同键值的对象,那么生成的数组应该包含ES5版本中这两个对象的组合

var arr = [
{
    "abc": [
        {
            "name": "test",
            "addr": "123",
       }
    ]
},
{
    "def": [
        {
            "first_name": "test",
            "last_name": "test"
        }
    ]
},
{
    "def": [
        {
            "first_name": "test1",
            "last_name": "test1"
        }
    ]
}
]

预期输出应为

var arr =[
{
    "abc": [
        {
            "name": "test",
            "addr": "123",
        }
    ]
},
{
    "def": [
        {
            "first_name": "test",
            "last_name": "test"
        },
        {
            "first_name": "test1",
            "last_name": "test1"
        }
    ]
}
]

有谁能帮助我实现这一目标?提前感谢

var arr=[ { abc:[ { 名称:test, 地址:123, } ] }, { 定义:[ { 名字:test, 姓氏:test } ] }, { 定义:[ { 名字:test1, 姓氏:test1 } ] }] const result=arr.reduceac,curr=>{ const key=Object.keycurr[0] const found=acc.findi=>i[key] 如果!找到了{ 附件:pushcurr }否则{ 已找到[键]=[…已找到[键],…当前[键]] } 返回acc; }, [] console.logresult使用对象和数组

var arr=[{ abc:[{ 名称:test, 地址:123, }] }, { 定义:[{ 名字:test, 姓氏:test }] }, { 定义:[{ 名字:test1, 姓氏:test1 }] } ] 变量b={} arr.forEachc=>{ var key=Object.keysc[0] var value=Object.valuesc[0] 如果!b[key]b[key]=[] b[键]。按…值 } //b是结果对象 变量c=[] Object.keysb.forEachv=>{ 设a={}; a[v]=b[v]; c、 普沙 } //c正在将对象转换为数组
console.logcWelcome到堆栈溢出!请拿着你的徽章!通读全文,尤其是你在这里的最佳选择是做你的研究,对于相关的话题,等等,然后试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会很乐意提供帮助。请重新打开此问题,因为建议的答案在ES6版本中,我正在寻找ES5版本,因为我的应用程序目前只支持ES5版本。我的应用程序不支持ES6版本的功能。请您在ES5Checkout中翻译它上面的答案。对于ES5版本,出现了一个错误“找不到对象中的函数find”。有任何帮助吗?find是ES5,IE中不支持它,因此您可以使用filter,filter将返回一个数组并使用索引0。如果数组为null或未定义,则无法运行此函数。将find替换为如下所示的过滤器var found=acc.filterfunction i{return i[key];}[0];我的应用程序不支持ES6版本的函数。你能把它翻译成ES5吗?