Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 如何按数值对2个单独的数组进行排序?_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript 如何按数值对2个单独的数组进行排序?

Javascript 如何按数值对2个单独的数组进行排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有两个javascript数组变量,如下所示 var distance = [10, 5, 2, 11, 12]; var places = ['A', 'B', 'C', 'D', 'E']; 我想做的是,我想对距离数组进行排序,这样数字应该按升序排列,并以此为基础,位置也应该按升序排列。因此,输出数组应该如下所示 var distance = [2, 5, 10, 11, 12]; var places = ['C', 'B', 'A', 'D', 'E']; 我尝试使用下面的代码对距

我有两个javascript数组变量,如下所示

var distance = [10, 5, 2, 11, 12];
var places = ['A', 'B', 'C', 'D', 'E'];
我想做的是,我想对距离数组进行排序,这样数字应该按升序排列,并以此为基础,位置也应该按升序排列。因此,输出数组应该如下所示

var distance = [2, 5, 10, 11, 12];
var places = ['C', 'B', 'A', 'D', 'E'];
我尝试使用下面的代码对距离数组进行排序,但我不知道应该使用什么逻辑将更改后的索引应用到位置数组

distance.sort(function(a,b){return a - b});

您可能想做的是将
位置
距离
组合到一个对象中,这样您就可以拥有一个对象数组。然后,您可以对单个数组进行排序,所有
place
distance
值将在排序后的数组中保持关联

var data = [
    {distance: 10, place: 'A'},
    {distance: 5, place: 'B'},
    {distance: 2, place: 'C'},
    {distance: 11, place: 'D'},
    {distance: 12, place: 'E'}
];

data.sort(function(a, b) {
    return a.distance - b.distance;
});

// result would be:

[
    {distance: 2, place: 'C'},
    {distance: 5, place: 'B'},
    {distance: 10, place: 'A'},
    {distance: 11, place: 'D'},
    {distance: 12, place: 'E'}
];
仅供参考,这种类型的存储结构对于从列表中添加或删除项目也很有用,因为您只需从阵列中添加或删除单个对象,而不是对两个阵列进行双重维护。想象一下,除了距离之外,你还有其他几个地方。这个对象数组结构的可伸缩性和维护简单得多。

试试这个

或者你可以试试这个

var distance = [10, 5, 2, 11, 12];
var places = ['A', 'B', 'C', 'D', 'E'];

var newArray = [];
distance.forEach(function(v, index){
    newArray.push({key: v, value: places[index]})
});

newArray.sort(function(a, b){
  return a.key - b.key;
});
distance = [];
places = [];
newArray.forEach(function(v){
    distance.push(v.key);
    places.push(v.value);
});

console.log(distance);
console.log(places);
var distance = [10, 5, 2, 11, 12];
var places = ['A', 'B', 'C', 'D', 'E'];

var newArray = [];
distance.forEach(function(v, index){
    newArray.push({key: v, value: places[index]})
});

newArray.sort(function(a, b){
  return a.key - b.key;
});
distance = [];
places = [];
newArray.forEach(function(v){
    distance.push(v.key);
    places.push(v.value);
});

console.log(distance);
console.log(places);