📜  如何在javascript中对二维数组进行排序(1)

📅  最后修改于: 2023-12-03 15:08:54.014000             🧑  作者: Mango

如何在 JavaScript 中对二维数组进行排序

在 JavaScript 中,我们可以使用内置的 sort() 方法来对数组进行排序。但如果要对二维数组进行排序,我们需要在 sort() 方法中传入一个比较函数来指定如何排序。

排序二维数组中的一维数组

想要按照二维数组中的一个指定的一维数组进行排序,可以使用以下代码:

const arr = [[2, 3, 1], [1, 2, 3], [3, 1, 2]];
arr.sort((a, b) => a[0] - b[0]);
console.log(arr); // [[1, 2, 3], [2, 3, 1], [3, 1, 2]]

在这个比较函数中,我们比较两个数组的第一个元素,然后返回它们的差值。如果差值为负数,则表示 a 应该排在 b 前面;如果差值为正数,则表示 b 应该排在 a 前面;如果差值为零,则表示它们在排序后应该保持原来的顺序不变。

我们也可以根据其他一维数组来进行排序,只需要改变比较函数中对应的下标即可。

排序二维数组中的多个一维数组

如果想要按照二维数组中的多个一维数组进行排序,则需要在比较函数中分别比较它们。以下是一个按照第一个一维数组和第二个一维数组来进行排序的例子:

const arr = [[2, 3, 1], [1, 2, 3], [3, 1, 2]];
arr.sort((a, b) => {
  if (a[0] !== b[0]) {
    return a[0] - b[0];
  } else {
    return a[1] - b[1];
  }
});
console.log(arr); // [[1, 2, 3], [2, 3, 1], [3, 1, 2]]

在这个比较函数中,我们首先比较两个数组的第一个元素,如果它们不相等,则按照差值来排序;如果它们相等,则再比较它们的第二个元素,以此类推。

我们也可以按照其他一维数组来进行排序,只需要在比较函数中增加相应的判断即可。

排序二维数组中的对象

如果二维数组中的元素是对象,我们需要在比较函数中指定要比较的属性。以下是一个按照对象中的 name 属性来进行排序的例子:

const arr = [{name: 'Bob', age: 20}, {name: 'Alice', age: 30}, {name: 'Charlie', age: 25}];
arr.sort((a, b) => a.name.localeCompare(b.name));
console.log(arr); // [{name: 'Alice', age: 30}, {name: 'Bob', age: 20}, {name: 'Charlie', age: 25}]

在这个比较函数中,我们使用了对象的 localeCompare 方法来比较它们的 name 属性。

如果想要根据对象的其他属性进行排序,只需要改变比较函数中对应的属性名即可。

总结

对于 JavaScript 中的二维数组排序,我们需要在比较函数中指定如何比较数组或对象的元素。无论是按照一维数组排序还是按照多个一维数组或对象属性进行排序,都需要使用比较函数来操作。