繁体   English   中英

如何对字典中的 Javascript 数组进行排序

[英]How to sort Javascript arrays in a dictionary

如果我有一个数组字典,例如:

samples = {
   "labels": ["A", "B", "C"],
   "values": [2, 3, 1]
}

如何按值顺序对列表进行排序? 例如,输出将是:

samples = {
   "labels": ["C", "A", "B"],
   "values": [1, 2, 3]
}

我是否需要将列表字典转换为字典列表,按值排序,然后转换回来,还是有更直接的方法?

您可以获取索引并对它们进行排序,然后使用排序的索引获取映射的数组。

 var samples = { labels: ["A", "B", "C"], values: [2, 3, 1] }, indices = [...samples.values.keys()]; indices.sort((a, b) => samples.values[a] - samples.values[b]); samples.labels = indices.map(i => samples.labels[i]); samples.values = indices.map(i => samples.values[i]); console.log(samples);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

我们可以就地完成这一切。

首先我们map一个新数组给我们 [{label, value}]
然后我们sort value sort最后我们使用reduce来重建我们的原始对象。

 let samples = { "labels": ["A", "B", "C"], "values": [2, 3, 1] } samples = samples.labels .map((label, i) => ({ label, value: samples.values[i] })) .sort(({ value: a }, { value: b }) => a - b) .reduce((a, { value, label }) => { a.labels.push(label); a.values.push(value); return a; }, { labels: [], values: []}); console.log(JSON.stringify(samples));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM