【问题标题】:Sorting parallel arrays in javascript在javascript中对并行数组进行排序
【发布时间】:2011-03-16 02:53:20
【问题描述】:

我有几个称为名称和销售额的并行数组。我让用户输入最多 100 名销售人员(显然是姓名)和他们的销售额。我把这些打印到桌子上没问题。问题(无论如何对我来说)是它们需要根据销售额按降序排列。我制作了一个名为sort 的函数,它被编码为(很糟糕——因为我刚刚开始学习 JavaScript):

function sort(names, sales) {
    var i = 0;
    var j = 0;
    var temp = 0;
    for (var i = 0; i < sales.length - 1; i++) {
        var min = i;
        for (var j = i + 1; j < array.length; j++)
        if (sales[j] < (sales[min])) min = j;
        temp = sales[i];
        sales[i] = sales[min];
        sales[min] = temp;
        temp = names[i];
        names[i] = names[min];
        names[min] = temp;
    }
}

显然,我在这里需要一些帮助。任何人都可以帮忙指出(无疑是很多)错误吗?

我们被指示编写自己的排序。销售额和姓名是通过两个不同的函数(getName()getSales())使用提示输入的。

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    首先,为什么不使用单个二维数组,例如 SalesArray:

    [['someName', 'someSale'], ['someName2', 'someSale2'], ]

    接下来,只需在排序时检查 SalesArray[i][1]。

    至于排序,请尝试实现bubblesort,尤其是在您不熟悉排序算法的情况下。

    【讨论】:

    • 当然,我应该补充一点,bubsort 是一种“糟糕”的排序算法。
    【解决方案2】:

    为什么不将名称和销售额都存储在一个对象中?然后一切都在一个数组中。

    // Declare array
    var people = new Array();
    
    // Somewhere in a loop to add people...
    var person = {
        name: "jdmichal",
        sales: 1000
    };
    people.push(person);
    
    // Now sort based on the sales property in each object.
    

    【讨论】:

    • 该死,我从未想过在原帖中解决的问题。在作业中,我们被告知要么使用并行数组,要么使用二维数组。没用过二维数组,刚开始学习并行数组,所以选择了parallel。
    • 我们也没有被教过'push()'。不过,看起来它肯定会奏效。
    • @unit 叹息。这就是为什么编程作业很糟糕。
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2012-05-02
    相关资源
    最近更新 更多