如何在一个字段中对jquery中的多维数组进行排序?

Sas*_*vus 3 arrays sorting jquery

我在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();
Run Code Online (Sandbox Code Playgroud)

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

我如何能?

T.J*_*der 7

你可以用Array#sort它:

myArray.sort(function(a, b) {
    return a[1] - b[1];
});
Run Code Online (Sandbox Code Playgroud)

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

见下面的实例.


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


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

var myArray = [
    [],
    [],
    [],
    [],
    []
];
Run Code Online (Sandbox Code Playgroud)

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


实例 | 直播来源:

// [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]);
}
Run Code Online (Sandbox Code Playgroud)

输出:

0: 2 - 7.5
1: 3 - 8.99
2: 4 - 12.25
3: 5 - 13.72
4: 1 - 14.95