gpt4 book ai didi

javascript - 使用 map 和 filter 处理具有相同值的项目

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

在下面的示例中,我有一个对象数组,其中包含有关电影的一些基本信息 - 电影名称和个人评分。

然后我返回重复值(使用映射和过滤器)以返回新数组,然后我可以计算该新数组中的项目数。

let films = [{
"name": "film 1",
"rating": "5",
}, {
"name": "film 2",
"rating": "1",
}, {
"name": "film 3",
"rating": "2",
}, {
"name": "film 4",
"rating": "2",
}, {
"name": "film 5",
"rating": "5",
}, {
"name": "film 6",
"rating": "4",
}];

let ratingsArray = films.map((element, i) => {
return element.rating;
})
let arr0 = ratingsArray.filter((rating) => {
return rating == 0;
})
let arr1 = ratingsArray.filter((rating) => {
return rating == 1;
})
let arr2 = ratingsArray.filter((rating) => {
return rating == 2;
})
let arr3 = ratingsArray.filter((rating) => {
return rating == 3;
})
let arr4 = ratingsArray.filter((rating) => {
return rating == 4;
})
let arr5 = ratingsArray.filter((rating) => {
return rating == 5;
});

console.log(arr0);
console.log(arr1);
console.log(arr2);
console.log(arr3);
console.log(arr4);
console.log(arr5);

这确实有效,但它似乎是一种非常重复的编写此代码的方式。

任何人都可以提出更好的建议吗?

最佳答案

您可以获取一个对象并按评级对对象进行分组。

var films = [{ name: "film 1", rating: "5", }, { name: "film 2", rating: "1", }, { name: "film 3", rating: "2", }, { name: "film 4", rating: "2", }, { name: "film 5", rating: "5", }, { name: "film 6", rating: "4", }],
ratings = Object.create(null);

films.forEach(o => (ratings[o.rating] = ratings[o.rating] || []).push(o));

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

关于javascript - 使用 map 和 filter 处理具有相同值的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47857309/

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