[英]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.