Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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_React Native - Fatal编程技术网

Javascript 如何合并两个对象数组

Javascript 如何合并两个对象数组,javascript,react-native,Javascript,React Native,嘿,我正在处理分区列表,我需要从10个项目中提取10个项目的数据。第一次提取工作正常,很好,但是第二次提取给了我很多问题 我的第一次抓取给我这样的数据 [ { title: '28/01/2020', data: [{location: madrid, city: madrid,...}, {location: barcelona, city: barcelona,...}] }, title: '29/01/2020' data: [{location: rabat, city: rabat,

嘿,我正在处理分区列表,我需要从10个项目中提取10个项目的数据。第一次提取工作正常,很好,但是第二次提取给了我很多问题

我的第一次抓取给我这样的数据

[
{
title: '28/01/2020',
data: [{location: madrid, city: madrid,...}, {location: barcelona, city: barcelona,...}]
},
title: '29/01/2020'
data: [{location: rabat, city: rabat,...}, {location: alger, city: alger,...}]
]
例如,第二次获取应该给我相同标题的数据

[
{
title: '29/01/2020',
data: [{location: londer, city: londer,...}, {location: rio, city: rio,...}]
},
title: '30/01/2020'
data: [{location: new york , city: new york ,...}, {location: roma, city: roma,...}]
]
我怎样才能合并这两个数组,并有一个这样的数组,这样我就不会有重复的标题

[{
title: '28/01/2020',
data: [{location: madrid, city: madrid,...}, {location: barcelona, city: barcelona,...}]
},
title: '29/01/2020',
data: [{location: rabat, city: rabat,...}, {location: alger, city: alger,...}, {location: londer, city: londer,...}, {location: rio, city: rio,...}]
},
title: '30/01/2020'
data: [{location: new york , city: new york ,...}, {location: roma, city: roma,...}]
]

您可以通过执行以下操作来明确合并这两个阵列:

let newArr = [...arr1,...arr2];
您可以通过以下方式删除此上的重复项:

newArr = newArr.filter((thing, index, self) =>
  index === self.findIndex((t) => (
    t.title === thing.title
  ))
)
希望有帮助。

您可以这样做:

让arr1=[
{
标题:“2020年1月28日”,
数据:[
{
地点:'巴黎',
城市:“巴黎”
},
{ 
地点:'巴黎',
城市:“巴黎”
}
]
},
{
标题:“2020年1月29日”,
数据:[
{
地点:“巴黎”,城市:“巴黎”
},
{
地点:“巴黎”,城市:“巴黎”
}
]
}
];
设arr2=[
{
标题:“2020年1月28日”,
数据:[
{
地点:'巴黎',
城市:“巴黎”
},
{ 
地点:'巴黎',
城市:“巴黎”
}
]
},
{
标题:“2020年1月30日”,
数据:[
{
地点:“巴黎”,城市:“巴黎”
},
{
地点:“巴黎”,城市:“巴黎”
}
]
}
];
让newArr=arr1.concat(arr2.filter(({title})=>!arr1.find(f=>f.title==title));

log(newArr)
您可以首先将对象简化为一个对象,以具有唯一键并获取其值。 您可以扩展该函数以允许更多数组

let merged=(数据1,数据2)=>
对象值(
[…数据1,…数据2]。减少(
(会计科目,当前)=>({
…acc,
[当前标题]:
acc中的当前标题
?{…curr,data:[…acc[curr.title]。data,…curr.data]}
:{……curr}
}),
{}
)
);
常量数据1=[
{
标题:“28/01/2020”,
数据:[
{
地点:“巴黎”,
城市:“巴黎”
},
{
地点:“巴黎”,
城市:“巴黎”
}
]
},
{
标题:“2020年1月29日”,
数据:[
{
地点:“巴黎”,
城市:“巴黎”
},
{
地点:“巴黎”,
城市:“巴黎”
}
]
}
];
常数数据2=[
{
标题:“28/01/2020”,
数据:[
{
地点:“巴黎”,
城市:“巴黎”
},
{
地点:“巴黎”,
城市:“巴黎”
}
]
},
{
标题:“30/01/2020”,
数据:[
{
地点:“巴黎”,
城市:“巴黎”
},
{
地点:“巴黎”,
城市:“巴黎”
}
]
}
];

log(合并(data1,data2))你能放一些你正在尝试的代码吗?我尝试了很多代码,但我最终都删除了它们并问了这个问题。我只想将一个对象标题中的重复标题与所有重复标题中的所有数据合并。但在这里,你没有关注'28/02/2020'的数据,你只选择了一个。我不想从重复中筛选数组,我想合并dublicat title在一个object中,但在'28/01/2020'的数据中,你必须有4个项为什么我们只有两个?你可以说它是worket,但从另一方面说,它导致从服务器获取多个数据。我不理解我的获取代码cz中没有问题。删除此代码时,它工作正常谢谢btw@HamzaElm,很有趣。你能分享你的有问题的代码或者一些沙盒,这样就可以理解问题了吗?