javascript - 有没有办法像我一样对两个并行数组进行排序

标签 javascript arrays sorting

我目前正在开发一个程序来对一组并行数组进行排序。该程序假设使用 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/>');
    }
}

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/

相关文章:

javascript - Hello.js 的 Twitter 错误

c++ - 使用 cout 后对象数组被破坏

python - 通过增加日期时间进行 Numpy 排序

javascript - “this”指针未定义可能是因为它丢失了,但是怎么办呢?

javascript - 我向新按钮添加了 onclick 属性,但它仅适用于旧按钮

javascript - 看不到 JS 的问题

arrays - swift 数组方法 "starts(with:)"导致类型 "Range<Int>"的值没有数字 "starts"

java - Android Java 创建十六进制字符串并将其转换为字节数组并返回

algorithm - CLRS 书中如何得出 BUILD_MAX_HEAP 与 O(n log n) 不渐近紧密的结论?

python - 按数值对字典(文本键)进行排序