如何将两个javascript数组合并为一个数组并按日期分组

如何将两个javascript数组合并为一个数组并按日期分组,javascript,arrays,object,Javascript,Arrays,Object,您好,我是编程新手,我偶然发现按日期对两个数组中的数组数据进行分组 以下是我的阵列: header = [ {"2019-04-22": "Sun, Apr 22, 2019"}, {"2019-04-21": "Sat, Apr 21, 2019"}, ] body = [ {"2019-04-22": "doing customer support”}, {"2019-04-22": "reply to emails"}, {"2019-04-21"

您好,我是编程新手,我偶然发现按日期对两个数组中的数组数据进行分组

以下是我的阵列:

header = [
    {"2019-04-22": "Sun, Apr 22, 2019"},
    {"2019-04-21": "Sat, Apr 21, 2019"},
]

body = [
    {"2019-04-22": "doing customer support”},
    {"2019-04-22": "reply to emails"},
    {"2019-04-21": "send message to customers"},
]
如何将数组分组为一个数组,如下例所示

combinearray = {
    "2019-04-22": [
        "Sun, Apr 22, 2019",
        "doing customer support",
        "reply to emails",
    ],
    "2019-04-21": [
        "Sat, Apr 21, 2019",
        "send message to customers",
    ],
}

按日期对两个数组数据进行分组对我来说似乎完全不容易——我是javascript编程的初学者。如果您能提供任何答案,我将不胜感激。

您可以通过以下步骤完成此操作:

  • 首先用于组合两个数组,即
    标题
    正文
  • 那就用这个。并将空对象作为第二个参数(累加器的初始值)传递
  • 在内部
    reduce()
    回调中,使用
    Object.keys()[0]
    获取日期
  • 检查date if date是否已经是累加器的键,将其设置为空
    []
  • 使用
    push()
    将元素添加到数组中
注意:这不会删除对
标题
正文
中真实对象的引用

const header=[{“2019-04-22”:“2019年4月22日星期日”},{“2019-04-21”:“2019年4月21日星期六”}]
const body=[{“2019-04-22”:“开展客户支持”},{“2019-04-22”:“回复电子邮件”},{“2019-04-21”:“向客户发送邮件”},]
const res=header.concat(body).reduce((ac,a)=>{
设key=Object.key(a)[0];
ac[键]=ac[键]| |[];
ac[键]。按(a)
返回ac;
},{})

console.log(res)
您可以使用组合数组,然后使用

  • 使用扩展语法合并数组
  • 使用reduce以所需格式生成对象
  • Object.entries以获取日期及其各自的值
  • 检查日期是否已作为对象上的键存在,如果已存在,则将值推送到该日期,否则创建一个新键
let header=[{“2019-04-22”:“2019年4月22日星期日”},{“2019-04-21”:“2019年4月21日星期六”},]
let body=[{“2019-04-22”:“开展客户支持”},{“2019-04-22”:“回复电子邮件”},{“2019-04-21”:“向客户发送消息”},]
让final=[…头,…体].reduce((op,inp)=>{
let[key,value]=Object.entries(inp)[0]
op[键]=op[键]| |[]
op[键]。推送(值)
返回操作
},{})

console.log(final)
combinearray
应该用obj包装在
{}
中,而不是
[]
您所需的输出不是有效的数组对不起。我觉得所需的输出好像有点异味。是否有任何理由认为每个日期都是一个对象数组,而不仅仅是
“2019-04-21”:[“Sat,2019年4月21日”,“向客户发送消息”]
?为每个对象重复键-如果您只关心字符串,那么对象的意义是什么?我想问的是,为什么您需要一个对象结构,在似乎根本不需要的地方嵌套和重复数据。我明白你想要什么,我只是觉得你应该考虑一下。如果你有一个很好的理由,那么当然,只要指出它似乎是多余的。您已经创建了一个键值对数组,其中的键(似乎)没有任何作用。@PHPcon总是乐于帮助:)