我目前正在开发一个程序来对一组并行数组进行排序。该程序假设使用 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] + ' ' + employeeSal[k] + '<br/>');
}
}
HTML
<body onload="getInfo()">
<div id ="content">
</div>
</body>
最佳答案
问题是您没有复制数组,而是引用原始数组。要制作副本,请使用切片:
tmpArrayName = employeeName;
tmpArraySal = employeeSal;
应该是
tmpArrayName = employeeName.slice(0);
tmpArraySal = employeeSal.slice(0);
关于javascript - 有没有办法像我一样对两个并行数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283807/