gpt4 book ai didi

javascript - 使用 Angular.js/JavaScript 对两个数组值进行排序并按日期合并

转载 作者:行者123 更新时间:2023-12-01 02:37:30 25 4
gpt4 key购买 nike

我有两个 json 数组,两个数组都有 date 字段值。这里我需要比较两个数组并合并为一个数组。我的代码如下:

var firstArr=[{'name':'Ram','date':'2017-12-06'},{'name':'Raja','date':'2017-12-07'},{'name':'Rahul','date':'2017-12-08'}];

var secondArr=[{'model':'mmm','date':'2017-12-06'},{'model':'rrr','date':'2017-12-09'}];

这里我有两个数组,我需要按日期比较这两个数组并将这两个值合并到一个数组中。预期输出如下。

var finalArr=[{'name':'Ram','date':'2017-12-06','model':'mmm'},{'name':'Raja','date':'2017-12-07','model':''},{'name':'Rahul','date':'2017-12-08','model':''},{'name':'','date':'2017-12-09','model':'rrr'}]

上面给出了我的预期输出。我正在尝试像下面这样。

angular.forEach(firstArr,function(obj1){
angular.forEach(secondArr.task,function(obj2){
if (new Date(obj1.date)=== new Date(obj2.date)) {

}
})
})

但是像这样我对两个数组长度有点困惑,因为它可能/可能不一样。

最佳答案

我关注的是 JS 部分,而不是 Angular 版本。

逻辑

  • 由于您需要根据日期字符串合并对象,因此可以创建一个以 dateString 作为属性、以 object 作为值的 hashMap。
  • 然后您可以使用Onject.assign来合并对象。如果不能,您甚至可以使用 for..in 循环或仅使用 2 个循环并手动设置特定属性。
  • 现在循环此 hashMap 并检索分组的对象。

示例:

var firstArr=[{'name':'Ram','date':'2017-12-06'},{'name':'Raja','date':'2017-12-07'},{'name':'Rahul','date':'2017-12-08'}];

var secondArr=[{'model':'mmm','date':'2017-12-06'},{'model':'rrr','date':'2017-12-09'}];

var hashMap = {};
[firstArr, secondArr].forEach(function(arr) {
arr.forEach(function(obj) {
hashMap[obj.date] = Object.assign(Object.create(null), hashMap[obj.date] || {}, obj);
})
});

var result = Object.keys(hashMap).map(x=> hashMap[x]);
console.log(result)

关于javascript - 使用 Angular.js/JavaScript 对两个数组值进行排序并按日期合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com