gpt4 book ai didi

javascript - 我如何通过我的选择标签中选择的数字过滤我的 json 数据

转载 作者:行者123 更新时间:2023-11-30 11:13:59 26 4
gpt4 key购买 nike

假设我有这个 json 文件:

[
{
"restaurantName":"name1",
"address":"restaurant1 address",
"lat":lat1,
"long":long1,
"ratings":[
{
"stars":4,
"comment":"good"
},
{
"stars":5,
"comment":"excellent"
}
]
},
{
"restaurantName":"name2",
"address":"restaurant2 address",
"lat":lat2,
"long":long2,
"ratings":[
{
"stars":4,
"comment":"good"
},
{
"stars":3,
"comment":"ok"
}
]
}
]

还有这段 html 代码:

<select id="s1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>

<select id="s2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<button type="button" id="btn">filter</button>

问题是我无法找到一种方法来过滤此数据并获取星级评级介于选择标签中的两个数字之间的餐厅列表。

最佳答案

您可以使用函数 Array.reduce 对星星值求和,使用函数 Array.filter 检查 from-to评分区间。

let data = [  {    "restaurantName":"name1",    "address":"restaurant1 address",    "lat":1,    "long":1,    "ratings":[       {          "stars":4,          "comment":"good"       },       {          "stars":5,          "comment":"excellent"       }     ]  },  {    "restaurantName":"name2",    "address":"restaurant2 address",    "lat":1,    "long":1,    "ratings":[       {          "stars":4,          "comment":"good"       },       {          "stars":3,          "comment":"ok"       }     ]  } ],
ratingFrom = 3, // from s1 select
ratingTo = 4, // from s2 select
result = data.filter(d => {
let avg = d.ratings.reduce((a, r) => a + r.stars, 0) / d.ratings.length;
return avg >= ratingFrom && avg <= ratingTo;
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 我如何通过我的选择标签中选择的数字过滤我的 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52408704/

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