![](/img/trans.png)
[英]Compare arrays of objects and return new array of objects that are not in one of the arrays
[英]Compare an Array to an Array of Objects and Return a new Array of Objects with Grouped Dates
我正在尝试格式化数据,以便它现在看起来像desiredResult
其作为result
。 我确实意识到我有点强行浏览数据,但我的算法技能并不好。 我将不胜感激任何尝试修复我的代码或为我指明方向以更好地了解我如何以更有效的方式执行此操作的帮助。
var endResult = dates.map(function (item) {
var arrayOfEvents = [];
var events = arrayOfObjects.map(function (value) {
if (item === value.info.startDate) {
arrayOfEvents.push(value)
return arrayOfEvents
} else{
return ""
}
});
return events
});
{JSON.stringify(endResult, null, 4)}
大批
var dates =
[
"01-06-2020",
"01-07-2020",
"01-08-2020",
"01-10-2020",
"02-04-2020"
]
对象数组
var arrayOfObjects =
[
{
"title": "Group President",
"id": "TpNY1SU_",
"info": {
"description": "hi",
"eventLocation": "change",
"dailyActivity": "false",
"startDate": "01-06-2020"
}
},
{
"title": "TEST",
"id": "cEpPxopz",
"info": {
"description": "TEST",
"eventLocation": "TEST",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
},
{
"title": "Example",
"id": "jnTMr_r7",
"info": {
"description": "example",
"eventLocation": "Exmaple",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
},
]
想要的结果
var desiredResult = [
[
{
"title": "Group President",
"id": "TpNY1SU_",
"info": {
"description": "hi",
"eventLocation": "change",
"dailyActivity": "false",
"startDate": "01-06-2020"
}
}
],
[
{
"title": "TEST",
"id": "cEpPxopz",
"info": {
"description": "TEST",
"eventLocation": "TEST",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
},
{
"title": "Example",
"id": "jnTMr_r7",
"info": {
"description": "example",
"eventLocation": "Exmaple",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
}
],
]
实际结果
var actualResult = [
[
[
{
"title": "Group President",
"id": "TpNY1SU_",
"info": {
"description": "hi",
"eventLocation": "change",
"dailyActivity": "false",
"startDate": "01-06-2020"
}
}
],
"",
"",
"",
"",
""
],
[
"",
[
{
"title": "TEST",
"id": "cEpPxopz",
"info": {
"description": "TEST",
"eventLocation": "TEST",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
},
{
"title": "Example",
"id": "jnTMr_r7",
"info": {
"description": "example",
"eventLocation": "Exmaple",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
}
],
[
{
"title": "TEST",
"id": "cEpPxopz",
"info": {
"description": "TEST",
"eventLocation": "TEST",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
},
{
"title": "Example",
"id": "jnTMr_r7",
"info": {
"description": "example",
"eventLocation": "Exmaple",
"dailyActivity": "true",
"startDate": "01-07-2020"
}
}
],
"",
"",
""
],
]
你走在正确的轨道上,除了一些小的调整
forEach is better suited
。 选择值并推入新数组。 外部和内部地图返回""
,它被包含在最终结果中(由于地图功能)。 使用 forEach 并将结果推送到数组中。
在此处阅读更多信息: JavaScript:.forEach() 和 .map() 之间的区别
使用 forEach 时,只需要将包含数据的值推送到最终结果中。 因此,我们需要对 > 0 进行长度检查。
修改了以下代码段中的代码:
var dates = [ "01-06-2020", "01-07-2020", "01-08-2020", "01-10-2020", "02-04-2020" ] var arrayOfObjects = [{"title":"Group President","id":"TpNY1SU_","info":{"description":"hi","eventLocation":"change","dailyActivity":"false","startDate":"01-06-2020"}},{"title":"TEST","id":"cEpPxopz","info":{"description":"TEST","eventLocation":"TEST","dailyActivity":"true","startDate":"01-07-2020"}},{"title":"Example","id":"jnTMr_r7","info":{"description":"example","eventLocation":"Exmaple","dailyActivity":"true","startDate":"01-07-2020"}}] var endResult = [] dates.forEach(function(item) { var arrayOfEvents = []; var events = arrayOfObjects.forEach(function(value) { if (item === value.info.startDate) { arrayOfEvents.push(value) } }); if(arrayOfEvents.length > 0) endResult.push(arrayOfEvents) }); console.log(JSON.stringify(endResult, null, 4))
希望能帮助到你。 如有任何疑问,请回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.