遍历具有嵌套数组的对象数组以确定所需的结果
Iterating through an array of objects with nested array to determine required result
给定以下对象结构数组,我需要一种扫描此数组中所有对象元素的方法,即从星期一到星期日,并且 return如果至少一个条目具有以下条件,则输入一个布尔值 (true):
weeklyFlag
设置为 true 并且 weeklyStartTime
和 weeklyEndTime
都不为空 - 具有针对它们的日期值。
在下面的数据中,星期一的 weeklyFlag
设置为真,但其他数据不是,而星期二具有 return 真实结果所需的所有条件。
最后,我只需要检查一个对象就可以拥有所有数据集。
正在查看嵌套的 for 循环,但不确定是否可以使用数组 map
或 filter
?
let weeklyTimes = [
{
"day": "Monday",
"startEnd": [
{
"weeklyFlag": true,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Tuesday",
"startEnd": [
{
"weeklyFlag": true,
"weeklyStartTime": "2021-08-08T14:00:00.000Z",
"weeklyEndTime": "2021-08-08T15:00:00.000Z"
}
]
},
{
"day": "Wednesday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Thursday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Friday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Saturday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Sunday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
}
您可以使用Array.filter()
过滤数据,如下所示。
顺便说一句,startEnd
属性可能是一个对象而不是数组,因为它只有 1 个项目。
let weeklyTimes = [{ "day": "Monday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Tuesday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": "2021-08-08T14:00:00.000Z", "weeklyEndTime": "2021-08-08T15:00:00.000Z" }] }, { "day": "Wednesday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Thursday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Friday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Saturday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Sunday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }]
const filteredData = weeklyTimes.filter((day) =>
day.startEnd[0].weeklyFlag
&& day.startEnd[0].weeklyStartTime
&& day.startEnd[0].weeklyEndTime)
console.log(filteredData)
或者如果您只想退回 1 件商品,您可以使用 Array.find()
let weeklyTimes = [{ "day": "Monday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Tuesday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": "2021-08-08T14:00:00.000Z", "weeklyEndTime": "2021-08-08T15:00:00.000Z" }] }, { "day": "Wednesday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Thursday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Friday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Saturday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Sunday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }]
const filteredData = weeklyTimes.find((day) =>
day.startEnd[0].weeklyFlag
&& day.startEnd[0].weeklyStartTime
&& day.startEnd[0].weeklyEndTime)
console.log(filteredData)
给定以下对象结构数组,我需要一种扫描此数组中所有对象元素的方法,即从星期一到星期日,并且 return如果至少一个条目具有以下条件,则输入一个布尔值 (true):
weeklyFlag
设置为 true 并且 weeklyStartTime
和 weeklyEndTime
都不为空 - 具有针对它们的日期值。
在下面的数据中,星期一的 weeklyFlag
设置为真,但其他数据不是,而星期二具有 return 真实结果所需的所有条件。
最后,我只需要检查一个对象就可以拥有所有数据集。
正在查看嵌套的 for 循环,但不确定是否可以使用数组 map
或 filter
?
let weeklyTimes = [
{
"day": "Monday",
"startEnd": [
{
"weeklyFlag": true,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Tuesday",
"startEnd": [
{
"weeklyFlag": true,
"weeklyStartTime": "2021-08-08T14:00:00.000Z",
"weeklyEndTime": "2021-08-08T15:00:00.000Z"
}
]
},
{
"day": "Wednesday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Thursday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Friday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Saturday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
},
{
"day": "Sunday",
"startEnd": [
{
"weeklyFlag": false,
"weeklyStartTime": null,
"weeklyEndTime": null
}
]
}
您可以使用Array.filter()
过滤数据,如下所示。
顺便说一句,startEnd
属性可能是一个对象而不是数组,因为它只有 1 个项目。
let weeklyTimes = [{ "day": "Monday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Tuesday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": "2021-08-08T14:00:00.000Z", "weeklyEndTime": "2021-08-08T15:00:00.000Z" }] }, { "day": "Wednesday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Thursday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Friday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Saturday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Sunday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }]
const filteredData = weeklyTimes.filter((day) =>
day.startEnd[0].weeklyFlag
&& day.startEnd[0].weeklyStartTime
&& day.startEnd[0].weeklyEndTime)
console.log(filteredData)
或者如果您只想退回 1 件商品,您可以使用 Array.find()
let weeklyTimes = [{ "day": "Monday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Tuesday", "startEnd": [{ "weeklyFlag": true, "weeklyStartTime": "2021-08-08T14:00:00.000Z", "weeklyEndTime": "2021-08-08T15:00:00.000Z" }] }, { "day": "Wednesday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Thursday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Friday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Saturday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }, { "day": "Sunday", "startEnd": [{ "weeklyFlag": false, "weeklyStartTime": null, "weeklyEndTime": null }] }]
const filteredData = weeklyTimes.find((day) =>
day.startEnd[0].weeklyFlag
&& day.startEnd[0].weeklyStartTime
&& day.startEnd[0].weeklyEndTime)
console.log(filteredData)