Javascript 有没有一种方法可以像我尝试的那样对两个并行数组进行排序

Javascript 有没有一种方法可以像我尝试的那样对两个并行数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我目前正在编写一个程序,对一组并行数组进行排序。假设程序使用myArray.sort()方法/函数对第一个数组进行排序。当程序打印出两个数组时,第二个数组值应与第一个数组排序保持一致。我想我很快就要解决它了,但是我不能完全理解它。sortArrays()函数是唯一需要工作的逻辑,其余的都工作得很好。任何帮助都将不胜感激 Javascript var employeeName = []; var employeeSal = []; var tmpArrayName = []; var tmpArr

我目前正在编写一个程序,对一组并行数组进行排序。假设程序使用
myArray.sort()
方法/函数对第一个数组进行排序。当程序打印出两个数组时,第二个数组值应与第一个数组排序保持一致。我想我很快就要解决它了,但是我不能完全理解它。
sortArrays()
函数是唯一需要工作的逻辑,其余的都工作得很好。任何帮助都将不胜感激

Javascript

var employeeName = [];
var employeeSal = [];
var tmpArrayName = [];
var tmpArraySal = [];
var arraySize = 0;

function getInfo() {
    arraySize = parseInt(prompt("How many employee records will you be adding today?"));
    while (isNaN(arraySize)) {
        arraySize = parseInt(prompt("Error: please enter a valid positive number for question (How many employee records will you be adding today?)"));
    }
    for (var l = 0; l < arraySize; l++) {
        employeeName[l] = prompt("Please enter the employee's last name and first name (ex: Wayne John)");
        employeeSal[l] = parseInt(prompt("Please enter the employee's yearly salary (ex: 62000)"));
        while (isNaN(employeeSal[l])) {
            employeeSal[l] = parseInt(prompt("Please enter the employee's yearly salary (ex: 62000)"));
        }
    }
    tmpArrayName = employeeName;
    tmpArraySal = employeeSal;
    employeeName.sort();
    sortArrays();
    printResult();
}

function sortArrays() {
    var index = 0;
    for (var i = 0; i < employeeName.length; i++) {
        index = employeeName.indexOf(tmpArrayName[i]);
        employeeSal[index] = tmpArraySal[i];
    }
}

function printResult() {
    for (var k = 0; k < employeeName.length; k++) {
        document.write('' + employeeName[k] + '&nbsp;&nbsp;' + employeeSal[k] + '<br/>');
    }
}
var employeeName=[];
var employeeSal=[];
var tmpArrayName=[];
var tmpArraySal=[];
var-arraySize=0;
函数getInfo(){
arraySize=parseInt(提示(“您今天要添加多少员工记录?”);
while(isNaN(阵列化)){
arraySize=parseInt(提示(“错误:请为问题输入一个有效的正数(您今天要添加多少员工记录?));
}
对于(var l=0;l');
}
}
HTML


问题在于您没有复制阵列,而是引用了原始阵列。要制作副本,请使用“切片”:

tmpArrayName = employeeName;
tmpArraySal = employeeSal;
应该是

tmpArrayName = employeeName.slice(0);
tmpArraySal = employeeSal.slice(0);

好的,这是最终的解决方案@caleb-an您的解决方案非常有效,但我通过使用for循环将tmpArrays值设置为原始数组来解决它

//this code works fine but can not use
        //tmpArrayName = employeeName.slice(0);
        //tmpArraySal = employeeSal.slice(0);

       //this code does the same exact thing and works
       for (var e = 0; e < employeeName.length; e++)
       {
           tmpArrayName[e] = employeeName[e];
           tmpArraySal[e] = employeeSal[e];
       }
//此代码工作正常,但无法使用
//tmpArrayName=employeeName.slice(0);
//tmpArraySal=员工工资条(0);
//这段代码做同样的事情,并且工作正常
对于(var e=0;e
Woah,复制粘贴故障仍在继续。您的代码无法读取,我们不应该做清理工作。您将员工姓名与工资配对,对吗?那么为什么要使用2个数组呢?您可以使用具有key/value的对象,因此只需排序一次。看看这里:我必须使用我们所学的功能,即并行数组、sort()、indexOf()和一些更基本的功能。目标是并行使用两个阵列。我的想法是只对employeeName[]进行排序,并使用函数更改employeeSal索引的数组以匹配。它看起来很坚固,但我遗漏了一些东西。当我切换索引时,将数组复制到临时数组似乎是一种方法。在我还在学习之前,我还没有使用过slice。我在整个代码中添加了一些print语句来进行错误检查,似乎旧的数组存储在了tmp数组中。我对编程还是很生疏。我不能使用你们提到的函数/对象类型,尽管我们还没有学会。我几乎必须编写函数来对它们进行排序,而不是使用我们还没有介绍过的函数。有没有不使用slice的想法?你的解决方案很完美。这确实解决了问题,但我无法使用它。我想我至少应该让人们知道你的解决方案是有效的。如果它有效,请勾选我的解决方案,然后向上投票,这样它就会得到一个绿色的复选标记。谢谢
//this code works fine but can not use
        //tmpArrayName = employeeName.slice(0);
        //tmpArraySal = employeeSal.slice(0);

       //this code does the same exact thing and works
       for (var e = 0; e < employeeName.length; e++)
       {
           tmpArrayName[e] = employeeName[e];
           tmpArraySal[e] = employeeSal[e];
       }