Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 - Fatal编程技术网

Javascript 字符串和整数数组排序

Javascript 字符串和整数数组排序,javascript,Javascript,我对数组排序有问题。我目前正试图在我玩的一个战略游戏中优化一个东西,为此我需要计算联盟所有成员之间的距离,第一个成员与其他成员之间的距离,以此类推。实际上这样做没问题。但现在,我要做的是对距离数组进行排序“升序”,问题是,我需要编写相应的昵称来匹配距离。我已经搜索了2天,但我找不出一个有效的解决方案 我试图在排序之前复制数组,但我需要未排序的数组,并且使用排序函数,它也会对副本进行排序! 实际上,提供的代码很好,谈到距离精度,但不是升序。如果我对距离进行排序,昵称将不再对应。我不知道为什么它们会

我对数组排序有问题。我目前正试图在我玩的一个战略游戏中优化一个东西,为此我需要计算联盟所有成员之间的距离,第一个成员与其他成员之间的距离,以此类推。实际上这样做没问题。但现在,我要做的是对距离数组进行排序“升序”,问题是,我需要编写相应的昵称来匹配距离。我已经搜索了2天,但我找不出一个有效的解决方案

我试图在排序之前复制数组,但我需要未排序的数组,并且使用排序函数,它也会对副本进行排序! 实际上,提供的代码很好,谈到距离精度,但不是升序。如果我对距离进行排序,昵称将不再对应。我不知道为什么它们会按伪_列表的顺序出现,因为它应该通过sort2()排序 这就是我到目前为止得到的结果:

//Sorting Distance[i] Array List
function nSort(arr) 
{
  return arr.sort((a, b) => a - b);
}

//Calculating Distance
function calcDist(xA, yA, xB, yB)
{
    return Math.sqrt(Math.pow((xB-xA), 2)+Math.pow((yB-yA), 2));
}

 //Here i'm trying to retrieved unsorted position of distance by index to sort the nicknames by their respective distances
function nSort2(arr_str, arr_nbr)
{
    var arr_nbr2 = arr_nbr.splice(0);
    var arr_sort = nSort(arr_nbr2);
    var str_sort = [];

    arr_str.forEach(function(element, i) 
    {
        j = arr_sort.indexOf(arr_nbr2[i], i);
        str_sort[i] = arr_str[j];
    });
    console.log(str_sort);
    return str_sort;
}

var pseudo_list = ["teddy95", "gabrielc", "ngozi"]; //The list (I just put the first 3 to not to write to much unnecessary code)
var x_ = [29, 26, 4]; // The X Coordinate list
var y_ = [519, 461, 143]; // The Y Coordinate list
var distance = [[]]; // The 2D Array for distance (distance[0][0] being the member's distance tower himself (which is obviously 0).

//Calculating Distances And Storing them in the 2D Array
y_.forEach(function(element, i) 
{
    distance[i] = [];
    x_.forEach(function(element, j) 
    {
        distance[i][j] = Math.ceil(calcDist(x_[i], y_[i], x_[j], y_[j]));
    });
});

//Displaying Sorted Array ascending (Trying)
y_.forEach(function(element, i) 
{
    x_.forEach(function(element, j) 
    {
            document.write(pseudo_list[i] + ' -> ' + nSort2(pseudo_list, distance[i])[j] + ': ' + distance[i][j] + '<br>');
    });
});
//排序距离[i]数组列表
功能传感器(arr)
{
返回arr.sort((a,b)=>a-b);
}
//计算距离
函数计算器(xA,yA,xB,yB)
{
返回Math.sqrt(Math.pow((xB-xA),2)+Math.pow((yB-yA),2));
}
//在这里,我试图通过索引检索未排序的距离位置,以便根据昵称各自的距离对其进行排序
功能传感器2(arr_str,arr_nbr)
{
var arr_nbr2=arr_nbr.拼接(0);
var arr_sort=nSort(arr_nbr2);
var str_sort=[];
arr_str.forEach(函数(元素,i)
{
j=arr_sort.indexOf(arr_nbr2[i],i);
str_sort[i]=arr_str[j];
});
console.log(str_排序);
返回stru排序;
}
var pseudo_list=[“teddy95”、“gabrielc”、“ngozi”]//列表(我只是把前3个放在不写太多不必要的代码上)
变量x_u=[29,26,4];//X坐标表
变量y=[51946143];//Y坐标表
变量距离=[[]];//距离的2D数组(距离[0][0]是成员自己的距离塔(显然是0)。
//计算距离并将其存储在二维阵列中
y.forEach(函数(元素,i)
{
距离[i]=[];
x.forEach(函数(元素,j)
{
距离[i][j]=Math.ceil(calcDist(x[i],y[i],x[j],y[j]);
});
});
//显示排序的数组升序(正在尝试)
y.forEach(函数(元素,i)
{
x.forEach(函数(元素,j)
{
写(伪列表[i]+'->'+orst2(伪列表,距离[i])[j]+':'+distance[i][j]+'
'); }); });
我认为您的问题来自数据结构过于复杂(我不是在侮辱您,只是在分享意见)

在下面的代码中,所有输入(pseudo,x,y)都存储在一个对象中,因此播放器数据更易于操作。 然后我不使用矩阵,因为你最终会创建新的问题,即我希望距离[1][2]=距离[2][1],所以排序将创建重复的结果(对角线没有帮助,因为它表示与你的距离).相反,我有一个没有重复的一维数组,即它包含从第一个元素到所有其他元素的距离(即第二个、第三个……),然后是从“右边的元素”(即第三个、第四个……)到第二个元素的距离。。。 获得所有距离信息后,排序是一项简单的任务,显示结果也是如此

//计算距离
函数计算器(xA,yA,xB,yB){
返回Math.sqrt(Math.pow((xB-xA),2)+Math.pow((yB-yA),2));
}
让玩家=[{
伪:“teddy95”,
x:29,
y:519
},
{
伪:“加布里埃尔克”,
x:26,,
y:461
},
{
伪:“ngozi”,
x:4,
y:143
}]
让距离=[]
players.forEach(函数(元素,i){
for(设j=i+1;j'))

})
您能提供和输入以及预期的输出吗?如果您想将一个成员分配给distance,请使用地图,然后您可以按距离或名称对其进行排序?我几乎可以肯定您的问题是基于distance数组的浅层副本,请参见此