【发布时间】:2022-02-02 21:57:24
【问题描述】:
我有一个对象数组,
const myArray = [{id:1, k_id:1},{id:2, k_id:2},{id:3, k_id:1},{id:4, k_id:3},{id:5, k_id:3},{id:6, k_id:2},{id:7, k_id:2},{id:8, k_id:4}];
myArray.sort((a, b) => a.k_id - b.k_id);
console.log(myArray);
我希望它根据 k_id 及其出现次数(降频)进行排序。但是,必须保留所有元素,因为我在对象中有其他值。其他键、值对可以按任何顺序排列。 (我在这里简化了我的问题,只有两个键值对,但实际数组有超过 15 个键值对)
产生的输出:
(8) [{id:1,k_id:1},{id:3,k_id:1},{id:2,k_id:2},{id:6,k_id:2},{id:7,k_id:2},{id:4,k_id:3},{id:5,k_id:3},{id:8,k_id:4}]
预期的输出,因为我需要将它们排序如下,因为k_id:2 出现的次数多于k_id:1:
myArray = [{id:6, k_id:2},{id:7, k_id:2},{id:2, k_id:2},{id:3, k_id:1},{id:1, k_id:1},{id:4, k_id:3},{id:5, k_id:3},{id:8, k_id:4}];
【问题讨论】:
-
在发布问题之前请阅读How to Ask 和minimal reproducible example。
-
@zer00ne 更新了问题
-
输出的例子没有意义。
k_id值的顺序如下:2,...2,..1,...1,...3,...3,...4 ? -
为什么是
{id:6, k_id:2},{id:7, k_id:2},{id:2, k_id:2}而不是{id:2, k_id:2}, {id:6, k_id:2},{id:7, k_id:2},因为这里的项目会保持它们的相对顺序,还是没关系? -
@NickParsons 没关系。只是 k_id 应该在它的出现次数中排序。 id 和其他键值对可以是任意顺序
标签: javascript arrays sorting object key-value