我正在尝试格式化数据,以使其看起来像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"
}
}
],
"",
"",
""
],
]
答案 0 :(得分:0)
除了少数细微调整之外,您处在正确的轨道上
forEach is better suited
。选择值并推入新数组。外部和内部地图都返回""
,该数字已包含在最终结果中(由于地图功能)。使用forEach并将结果推入数组。
在此处阅读更多信息:JavaScript: Difference between .forEach() and .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))
希望有帮助。如有任何疑问,请回复。