Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在字典中对Javascript数组进行排序_Javascript_Arrays_Sorting_Dictionary - Fatal编程技术网

如何在字典中对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))这对我有用。谢谢我还可以通过添加更多地图将其扩展到对字典中的其他列表进行排序。这对我来说很有用。谢谢我还可以通过添加更多地图将其扩展到对字典中的其他列表进行排序。