如何在字典中对Javascript数组进行排序
如果我有数组字典,例如:如何在字典中对Javascript数组进行排序,javascript,arrays,sorting,dictionary,Javascript,Arrays,Sorting,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]
}
如何按值顺序对列表进行排序?例如,输出将是:
samples = {
"labels": ["C", "A", "B"],
"values": [1, 2, 3]
}
我是否需要将列表字典转换为字典列表,按值排序,然后再转换回去,或者有更直接的方法吗?您可以获取索引并对其进行排序,然后使用排序后的索引获得映射数组
var-samples={标签:[A”,“B”,“C],值:[2,3,1]},
索引=[…samples.values.keys()];
index.sort((a,b)=>samples.values[a]-samples.values[b]);
samples.labels=index.map(i=>samples.labels[i]);
samples.values=index.map(i=>samples.values[i]);
控制台日志(样本)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以获取索引并对其进行排序,然后使用排序后的索引获取映射数组
var-samples={标签:[A”,“B”,“C],值:[2,3,1]},
索引=[…samples.values.keys()];
index.sort((a,b)=>samples.values[a]-samples.values[b]);
samples.labels=index.map(i=>samples.labels[i]);
samples.values=index.map(i=>samples.values[i]);
控制台日志(样本)代码>
。作为控制台包装{max height:100%!important;top:0;}
我们可以在适当的位置完成这一切
首先,我们map
一个新的数组给我们[{label,value}]
然后我们对值进行排序
最后,我们使用reduce
重建到原始对象
let samples={
“标签”:[“A”、“B”、“C”],
“价值”:[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、 标签。推(标签);
a、 值。推送(值);
返回a;
},{标签:[],值:[]});
log(JSON.stringify(samples))代码>我们可以就地完成这一切
首先,我们map
一个新的数组给我们[{label,value}]
然后我们对值进行排序
最后,我们使用reduce
重建到原始对象
let samples={
“标签”:[“A”、“B”、“C”],
“价值”:[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、 标签。推(标签);
a、 值。推送(值);
返回a;
},{标签:[],值:[]});
log(JSON.stringify(samples))代码>这对我有用。谢谢我还可以通过添加更多地图将其扩展到对字典中的其他列表进行排序。这对我来说很有用。谢谢我还可以通过添加更多地图将其扩展到对字典中的其他列表进行排序。