JS二维数组排序详解

一、JS二维数组排序sort

在JS中,可以使用sort方法来对一维数组进行排序,而对于二维数组,我们只需要稍作修改即可。sort方法需要传入一个函数作为参数,函数的返回值决定了数组的排序顺序。

// 二维数组按第一列排序
var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
arr.sort(function(a, b) {
  return a[0] - b[0];
});
console.log(arr);
// 输出:[[3, 2, 1], [6, 5, 4], [9, 8, 7]]

在上面的代码中,我们按照二维数组的第一列进行升序排序。其中,参数a和b分别代表当前比较的两个数组。

二、JS二维数组转置

在很多应用场景中,需要将二维数组的行和列进行互换,即进行转置操作。我们可以通过遍历二维数组,创建一个新的数组来实现转置。

var arr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
var res = [];
for (var i = 0; i < arr[0].length; i++) {
  res[i] = [];
  for (var j = 0; j < arr.length; j++) {
    res[i][j] = arr[j][i];
  }
}
console.log(res);
// 输出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

三、JS二维数组排序方法sort

除了使用sort方法外,我们还可以使用数组排序方法来对二维数组进行排序。这里我们使用冒泡排序作为例子。

function sort(arr, col) {
  for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j  arr[j + 1][col]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}
var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
console.log(sort(arr, 0));
// 输出:[[3, 2, 1], [6, 5, 4], [9, 8, 7]]

console.log(sort(arr, 1));
// 输出:[[9, 8, 7], [6, 5, 4], [3, 2, 1]]

console.log(sort(arr, 2));
// 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在上面的代码中,sort函数接受两个参数,分别为要排序的数组和排序的列号。通过遍历数组,进行冒泡排序,最后返回排好序的数组。

四、JS二维数组排序 第一行第一列

有时候,我们需要对二维数组的第一行和第一列进行排序,可以通过以下代码实现。

var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
arr.sort(function(a, b) {
  if (a[0] !== b[0]) {
    return a[0] - b[0];
  } else {
    return a[1] - b[1];
  }
});
for (var i = 0; i < arr.length; i++) {
  arr[i].sort(function(a, b) {
    if (i === 0) {
      return a - b;
    } else {
      return 0;
    }
  });
}
console.log(arr);
// 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在上面的代码中,我们先按照第一列升序排序,如果第一列相同,则按照第二列升序排序。然后再分别对第一行和第一列进行排序,最终得到排序好的二维数组。

五、二维数组排序

对于一般的二维数组排序,我们可以将二维数组转换为一维数组,使用sort方法进行排序。

var arr = [
  [3, 2, 1],
  [6, 5, 4],
  [9, 8, 7]
];
var temp = [];
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    temp.push(arr[i][j]);
  }
}
temp.sort(function(a, b) {
  return a - b;
});
var res = [];
for (var i = 0; i < arr.length; i++) {
  res[i] = [];
  for (var j = 0; j < arr[i].length; j++) {
    res[i][j] = temp.shift();
  }
}
console.log(res);
// 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在上面的代码中,我们将二维数组转换为一维数组,并进行排序。然后再将一维数组按照原来的行列方式还原成二维数组。

六、JS遍历二维数组

遍历二维数组的方法和一维数组类似,只需要使用嵌套的for循环即可。

var arr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    console.log(arr[i][j]);
  }
}

在上面的代码中,我们使用两个for循环遍历二维数组,并输出数组元素。

七、JS定义二维数组

在JS中,二维数组也是一种数组类型,同样需要使用Array对象进行创建。我们以一个3行4列的二维数组为例。

var arr = new Array(3);
for (var i = 0; i < 3; i++) {
  arr[i] = new Array(4);
}
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[0][3] = 4;
arr[1][0] = 5;
arr[1][1] = 6;
arr[1][2] = 7;
arr[1][3] = 8;
arr[2][0] = 9;
arr[2][1] = 10;
arr[2][2] = 11;
arr[2][3] = 12;
console.log(arr);
// 输出:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

在上面的代码中,我们先定义了一个长度为3的一维数组,然后用for循环分别对每个一维数组进行定义,得到二维数组。

八、JS创建二维数组

除了使用Array对象,我们还可以使用JS的双重for循环来创建二维数组。

var arr = [];
for (var i = 0; i < 3; i++) {
  arr[i] = [];
  for (var j = 0; j < 4; j++) {
    arr[i][j] = i * 4 + j + 1;
  }
}
console.log(arr);
// 输出:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

在上面的代码中,我们使用两个for循环分别定义行和列,并给每个元素赋予对应的数值,从而得到二维数组。

原创文章,作者:JSLKR,如若转载,请注明出处:https://www.506064.com/n/316875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JSLKRJSLKR
上一篇 2025-01-09 12:15
下一篇 2025-01-09 12:15

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • Python去掉数组的中括号

    在Python中,被中括号包裹的数据结构是列表,列表是Python中非常常见的数据类型之一。但是,有些时候我们需要将列表展开成一维的数组,并且去掉中括号。本文将为大家详细介绍如何用…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • Python二维数组对齐输出

    本文将从多个方面详细阐述Python二维数组对齐输出的方法与技巧。 一、格式化输出 Python中提供了格式化输出的方法,可以对输出的字符串进行格式化处理。 names = [‘A…

    编程 2025-04-29
  • Java创建一个有10万个元素的数组

    本文将从以下方面对Java创建一个有10万个元素的数组进行详细阐述: 一、基本介绍 Java是一种面向对象的编程语言,其强大的数组功能可以支持创建大规模的多维数组以及各种复杂的数据…

    编程 2025-04-28
  • Python数组随机分组用法介绍

    Python数组随机分组是一个在数据分析与处理中常用的技术,它可以将一个大的数据集分成若干组,以便于进行处理和分析。本文将从多个方面对Python数组随机分组进行详细的阐述,包括使…

    编程 2025-04-28

发表回复

登录后才能评论