3

我在 jquery 中有这个数组:

var myArray = new Array();
myArray[1] = new Array();
myArray[2] = new Array();
myArray[3] = new Array();
myArray[4] = new Array();
myArray[5] = new Array();

元素myArray[x][1](x 可以是 1 到 5)包含一个数值(价格),元素包含myArray[x][2]另一个数值(标识符)。我需要按myArray[x][1](价格)的值对数组进行排序,而不需要将每个价格与他的标识符(他的[x][2])分开。

我如何能?

4

1 回答 1

7

您可以Array#sort为此使用:

myArray.sort(function(a, b) {
    return a[1] - b[1];
});

...假设[1]子数组中的条目实际上是数字。

请参阅下面的实时示例。


旁注#1:请注意,数组索引从 开始0,因此引用的数组undefined(而不是子数组)位于第一个位置。在执行上述操作之前,您可能需要通过执行以下操作来解决此问题。


旁注 #2:在 JavaScript 中,几乎没有任何理由编写new Array(). 相反,只需使用数组文字:[]。例如,您引用的代码可能是:

var myArray = [
    [],
    [],
    [],
    [],
    []
];

...假设您修复了上述错误。


实例| 直播源

// [0] is the id, [1] is the price
var myArray = [
    [1, 14.95],
    [2, 7.50],
    [3, 8.99],
    [4, 12.25],
    [5, 13.72]
];

myArray.sort(function(a, b) {
    return a[1] - b[1];
});

var index, entry;
for (index = 0; index < myArray.length; ++index) {
    entry = myArray[index];
    console.log(index + ": " + entry[0] + " - " + entry[1]);
}

输出:

0:2 - 7.5
1:3 - 8.99
2:4 - 12.25
3:5 - 13.72
4:1 - 14.95
于 2013-09-24T09:49:00.093 回答