gpt4 book ai didi

javascript - 如何在不使用三个嵌套 for 循环的情况下解决这个问题

转载 作者:行者123 更新时间:2023-11-28 17:48:04 25 4
gpt4 key购买 nike

我有一个类似这样的对象数组

var data = [{"2017-09-13":{date_time:"2017-09-13",value:"20"}},{"2017-09-13":{date_time:"2017-09-13",value:"22"}},{"2017-09-15":{date_time:"2017-09-15",value:"25"}},{"2017-09-15":{date_time:"2017-09-15",value:"30"}},{"2017-09-16":{date_time:"2017-09-16",value:"10"}}];

我有一个像这样的日期数组

var dates = ["2017-09-13","2017-09-15"];

我想修改数据数组,使其仅包含日期数组中提到的日期。我尝试过这样的事情

var date = [];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < dates.length; j++) {
for (key in data[i]) {
if (dates[j] == key) {
date.push(data[i])
}
}
}
}

它给了我所需的结果。然而,这效率不高并且滞后于应用程序。有什么有效的方法吗?

编辑:更新了正确的数据结构

最佳答案

const data = [
{
"2017-09-13": {
"date_time": "2017-09-13",
"value": "20"
}
},
{
"2017-09-13": {
"date_time": "2017-09-13",
"value": "22"
}
},
{
"2017-09-15": {
"date_time": "2017-09-15",
"value": "25"
}
},
{
"2017-09-15": {
"date_time": "2017-09-15",
"value": "30"
}
},
{
"2017-09-16": {
"date_time": "2017-09-16",
"value": "10"
}
}
];

const dates = ["2017-09-13", "2017-09-15"];
const datesSet = new Set(dates);

const filteredData = data.filter(item => datesSet.has(Object.keys(item)[0]));
console.log(filteredData);

考虑删除使用日期作为键,因为它们似乎是冗余信息:

const data = [
{
"date_time": "2017-09-13",
"value": "20"
},
{
"date_time": "2017-09-13",
"value": "22"
},
{
"date_time": "2017-09-15",
"value": "25"
},
{
"date_time": "2017-09-15",
"value": "30"
},
{
"date_time": "2017-09-16",
"value": "10"
}
];

const dates = ["2017-09-13", "2017-09-15"];
const datesSet = new Set(dates);

const filteredData = data.filter(item => datesSet.has(item.date_time));
console.log(filteredData);

关于javascript - 如何在不使用三个嵌套 for 循环的情况下解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46252585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com