gpt4 book ai didi

javascript - 对对象数组中的项目进行分组和排序

转载 作者:行者123 更新时间:2023-11-28 07:43:43 24 4
gpt4 key购买 nike

这是我的对象数组:

var array = [
{season: 1, episode: 2, notes: "..."},
{season: 1, episode: 2, notes: "..."},
{season: 1, episode: 1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: 3, episode: 1, notes: "..."},
{season: 13, episode: 12, notes: "..."},
{season: 2, episode: 1, notes: "..."},
];

我想按季节对这个数组进行排序,因此结果必须是:

var sorted_array = [
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: 1, episode: 1, notes: "..."},
{season: 1, episode: 2, notes: "..."},
{season: 1, episode: 2, notes: "..."},
{season: 2, episode: 1, notes: "..."},
{season: 3, episode: 1, notes: "..."},
{season: 13, episode: 12, notes: "..."},
];

并按季节和剧集对数组进行分组,因此必须使用另一个键,结果必须如下所示:

var final_array = [

{ "S-1 E-1": [
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
] },
{ "S01 E01": [
{season: 1, episode: 1, notes: "..."}
] },
{ "S01 E02": [
{season: 1, episode: 2, notes: "..."},
{season: 1, episode: 2, notes: "..."}
] },
{ "S02 E01": [
{season: 2, episode: 1, notes: "..."}
] },
{ "S03 E01": [
{season: 3, episode: 1, notes: "..."}
] },
{ "S13 E12": [
{season: 13, episode: 12, notes: "..."}
] }

];

关于如何从 array 生成像 final_array 这样的数组有什么想法吗?

谢谢

最佳答案

您可以使用_.groupBy立即进行分组:

var grouped = _.groupBy(array, function (el) { 
var s = el.season,
e = el.episode;
return "S" + (s > 0 && s < 10 ? "0" : "") + s +
" E" + (e > 0 && e < 10 ? "0" : "") + e;
});

这将生成一个以分组值作为键的单个对象:

{ 
"S-1 E-1": [
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
{season: -1, episode: -1, notes: "..."},
],
"S01 E01": [
{season: 1, episode: 1, notes: "..."}
],
"S01 E02": [
{season: 1, episode: 2, notes: "..."},
{season: 1, episode: 2, notes: "..."}
],
"S02 E01": [
{season: 2, episode: 1, notes: "..."}
],
"S03 E01": [
{season: 3, episode: 1, notes: "..."}
],
"S13 E12": [
{season: 13, episode: 12, notes: "..."}
]
}

如果您想按季节/剧集排序顺序对其进行迭代,您可以对其键进行排序并迭代这些键:

_.sortBy(Object.keys(grouped), function (el) { return el; }).forEach(function (key) {
console.log(key + ":");
console.log(grouped[key]);
});

http://jsfiddle.net/g370ycmn/

关于javascript - 对对象数组中的项目进行分组和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694277/

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