2011-03-16 89 views
2

我有几个并行数组称为名称和销售。我有这个用户可以输入多达100个销售人员(很明显的名字)和他们的销售额。我没有问题打印到桌子上。 (无论如何)的结果是,他们需要按销售额降序排列。我已经叫sort被编码(很差 - 因为我刚开始学习JavaScript)的函数为:在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())使用提示输入销售和名称。

回答

3

首先,为什么不使用一个单一的二维阵列,比方说,SalesArray,例如:

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

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

至于排序,尝试执行bubblesort,特别是如果你是新的排序算法。

+1

当然,我应该补充说bubsort是一个“坏”排序算法。 – ybakos 2012-03-07 20:23:29

1

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

// 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. 
+0

织补,我从来没有想过在原帖中解决的问题。在作业中,我们被告知要么使用平行数组,要么使用2维数组。我从来没有使用二维数组,并且刚开始学习平行数组,所以我选择了并行。 – unit 2011-03-16 03:06:39

+0

我们也没有被教过'push()'。但是,看起来它肯定会有诀窍。 – unit 2011-03-16 03:07:47

+0

@单位*感叹。*这就是为什么编程任务非常糟糕。 – 2011-03-16 15:12:25