繁体   English   中英

如何检查和分类json数组中的键是否具有相同的值?

[英]How to check & classify if key in json array has same value?

我想将同一时间的会议分为不同的组。 怎么做?

我已经能够识别同一时间的会议并将它们推送到临时数组中。

但所有这些都来自临时数组。

以下是回应。

[
  {
    "id": "1081",
    "endDate": "2020-03-24T12:30:00.000Z",
    "startDate": "2020-03-24T12:00:00.000Z",
    "title": "Meeting 1"
  },
  {
    "id": "1073",
    "endDate": "2020-03-24T13:00:00.000Z",
    "startDate": "2020-03-24T12:30:00.000Z",
    "title": "Meeting 2"
  },
  {
    "id": "1082"
    "endDate": "2020-03-24T12:30:00.000Z",
    "startDate": "2020-03-24T12:00:00.000Z",
    "title": "Event 2",
  },
  {
    "id": "1083"
    "endDate": "2020-03-24T13:00:00.000Z",
    "startDate": "2020-03-24T12:30:00.000Z",
    "description": "",
    "title": "event 1",
  },
  {

    "id": "1050",
    "endDate": "2020-03-25T13:00:00.000Z",
    "startDate": "2020-03-25T12:30:00.000Z",
    "title": "event 2",
  }
]

我已使用以下代码段在同一时间召开会议。

events.sort(function(a, b) {
              return a.startDate < b.startDate
                ? -1
                : a.startDate > b.startDate
                ? 1
                : 0;
            });
            for (let i = 0; i < events.length; i++) {
              const startDate = events[i].startDate;
              for (let j = i + 1; j < events.length; j++) {
                const startDateNext = events[j].startDate;

                if (startDate === startDateNext) {
                  console.log("ONCE: ", events[j]);
                  flag++;
                  console.log('Array Element %d and %d are equal', i, j);

                }
              }
            }
            console.log('\nThe Equal Numbers In The Array Are = %d', flag);
            console.log('All Events: ', JSON.stringify(events));
            console.log('Events same time: ', eventsWithSameTime);

输出:

数组元素 0 和 2 相等

数组元素 1 和 3 相等

数组元素 1 和 4 相等

数组元素 3 和 4 相等

我想分组会议,如:[0,2] & [1,3,4]

任何帮助表示赞赏。

您可以使用 reduce 并按开始日期对它们进行分组。 这将为您提供组合在一起的会议。

 var meetings = [ { "id": "1081", "endDate": "2020-03-24T12:30:00.000Z", "startDate": "2020-03-24T12:00:00.000Z", "title": "Meeting 1" }, { "id": "1073", "endDate": "2020-03-24T13:00:00.000Z", "startDate": "2020-03-24T12:30:00.000Z", "title": "Meeting 2" }, { "id": "1082", "endDate": "2020-03-24T12:30:00.000Z", "startDate": "2020-03-24T12:00:00.000Z", "title": "Event 2", }, { "id": "1083", "endDate": "2020-03-24T13:00:00.000Z", "startDate": "2020-03-24T12:30:00.000Z", "description": "", "title": "event 1", }, { "id": "1050", "endDate": "2020-03-25T13:00:00.000Z", "startDate": "2020-03-25T12:30:00.000Z", "title": "event 2", } ] var grouped = meetings.reduce( function (obj, meeting) { var startDate = meeting.startDate obj[startDate] = obj[startDate] || [] obj[startDate].push(meeting) return obj }, {}) console.log(grouped)

如果您知道不同的日期,您可以使用 filter 方法编写这样的函数

let arrayEvent1 = meetings.filter((el) => {
  return el.startDate === "2020-03-24T12:00:00.000Z"
});

let arrayEvent2 = meetings.filter((el) => {
  return el.startDate === "2020-03-24T12:30:00.000Z"
});

如果您不知道可以使用@epascarello的解决方案

这将创建一个包含所有不同会话集的数组对象

var grouped = meetings.reduce( function (obj, meeting) {
  var startDate = meeting.startDate
  obj[startDate] = obj[startDate] || []
  obj[startDate].push(meeting)
  return obj
}, {})

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM