【发布时间】:2020-06-10 17:53:15
【问题描述】:
我有一个数组列表,它必须根据其他 3 个数组值进行排序。我成功地能够使用一个数组进行排序,但不知道如何处理剩余的数组。如果我的逻辑有误,请指正。
let result = [
{"name" : "two", "sports" : "football", "prize" : "first"},
{"name" : "two", "sports" : "cricket", "prize" : "first"},
{"name" : "two", "sports" : "cricket", "prize" : "second"},
{"name" : "three", "sports" : "football", "prize" : "first"},
{"name" : "one", "sports" : "football", "prize" : "first"},
{"name" : "three", "sports" : "cricket", "prize" : "second"},
{"name" : "one", "sports" : "cricket", "prize" : "second"},
{"name" : "one", "sports" : "cricket", "prize" : "first"},
]
let norder = ["one", "two", "three"];
function courseSort(a, order, key) {
const map = order.reduce((r, v, i) => ((r[v] = i), r), {})
return a.sort((a, b) => map[a[key]] - map[b[key]])
}
result = courseSort(result, norder, `name`);
console.log(result)
我的另外两个数组是
let nsports = ["cricket", "football", "chess"];
let nprize = ["first", "second"];
除了基于第一项“名称”上的一个数组值进行排序外,其他项目需要排序和重新排序保持相同。预期输出如下
[
{"name" : "one", "sports" : "cricket", "prize" : "first"},
{"name" : "one", "sports" : "cricket", "prize" : "second"},
{"name" : "one", "sports" : "football", "prize" : "first"},
{"name" : "two", "sports" : "cricket", "prize" : "first"},
{"name" : "two", "sports" : "cricket", "prize" : "second"},
{"name" : "two", "sports" : "football", "prize" : "first"},
{"name" : "three", "sports" : "cricket", "prize" : "second"},
{"name" : "three", "sports" : "football", "prize" : "first"},
]
第一级排序应该冻结字段名称,第二级是运动,第三级是奖
请提出解决方法
【问题讨论】:
标签: javascript jquery arrays