javascript 多维数组定义、添加、删除和排序元素(js list列表)

亮术网 2020-05-23 本网原创

有关 javascript 数组的定义在之前的文章中已经介绍过,文章名称为《js数组操作大全》,里面用实例介绍了 js一维数组的定义、初始化、添加、修改、删除元素、排序、数组截取与合并和转义符。本篇继续介绍 javascript 多维数组定义、初始化和应用。

在 javascript 中,一维数组与多维数组所使用的添加、删除和排序元素的方法相同,只不过多维数组把一个对象(一条记录)当作一个元素,方法说明请参考《js数组操作大全(带实例),含隐性定义、三种添加和删除元素的方法、排序、数组转字符、数组合并和多维数组》一文。另外,javascript 没有像 C# 一样的 list 列表,但可以用多维数组实现跟 list 一样的功能,文章将以具体实例说明,先从 js 多维数组定义开始。

 

一、javascript 多维数组定义

定义一个一维数组,再把它作为另一个一维数组的一个元素,这个把数组作为元素的数组就是多维数组,也就多维数组是多个一维数组的组合。以下是一个多维 javascript 数组定义实例:

var arrays = new Array();
  arrays[0] = new Array("user1", "00001", "2014-5-15");
  arrays[1] = new Array("user2", "00002", "2014-5-13");
  arrays[2] = new Array("user3", "00003", "2014-5-10");

 

或者:

var arrays = [
    ["user1", "00001", "2020-5-15"],
    ["user2", "00002", "2020-5-13"],
    ["user3", "00003", "2020-5-10"]
  ];

 

动态定义:

var arrays = new Array();
  for (var i = 0; i < 10; i++) {
    arrays[i] = new Array("user" + i, "0000" + i, "2014-5-15");
  }

 

二、javascript 多维数组添加元素

1、在数组后添加一条记录

arrays.push(["user4","00004", "2020-5-16"]);

输出第三行第一列对应的元素:

document.write(arrays[3][1]);//结果:00004

 

2、在数组前添加一条记录

arrays.unshift(["user4","00004", "2020-5-16"]);//在第一行前添加元素

输出所有元素:

for (var i = 0; i < arrays.length; i++) {
    for (var j = 0; j < arrays[i].length; j++){
      document.write(arrays[i][j]);
      if (j < arrays[i].length - 1){
        document.write(", ");
      }
    }
    document.write("<br />");
  }

结果:

user4, 00004, 2020-5-16
  user1, 00001, 2020-5-15
  user2, 00002, 2020-5-13
  user3, 00003, 2020-5-10

 

3、在已有行后添加元素

arrays[1].push(["user4","00004", "2020-5-16"]);//在第一行后添加元素

输出所有元素为(输出方法见上文):

user1, 00001, 2020-5-15
  user2, 00002, 2020-5-13, user4,00004,2020-5-16
  user3, 00003, 2020-5-10

 

4、从指定位置起先删除2两条记录再插入一条记录

arrays.splice(1,2,["user4","00004", "2020-5-16"]);//从第二条记录起先删除2两条记录再插入一条记录

输出所有元素为(输出方法同上):

user1, 00001, 2020-5-15
  user4, 00004, 2020-5-16

 

 

三、javascript 多维数组删除元素

1、删除指定行最后一个元素

arrays[1].pop();//删除第二行最后一个元素

输出结果为:

user1, 00001, 2020-5-15
  user2, 00002
  user3, 00003, 2020-5-10

 

2、删除数组最后一条记录

arrays.pop();

输出结果为:

user1, 00001, 2020-5-15
  user2, 00002, 2020-5-1

 

3、删除指定行第一个元素

arrays[1].pop();//删除第二行第一个元素

输出结果为:

user1, 00001, 2020-5-15
  00002, 2020-5-13
  user3, 00003, 2020-5-10

 

4、删除数组第一条记录

arrays.shift();

输出结果为:

user2, 00002, 2020-5-13
  user3, 00003, 2020-5-10

 

5、从指定位置起删除指定条记录

arrays.splice(1,2);//从第二条记录起删除2两条记录

输出结果为:

user1, 00001, 2020-5-15

 

四、javascript 多维数组排序

1、升序

arrays.sort();

输出结果为:

user1, 00001, 2020-5-15
  user2, 00002, 2020-5-13
  user3, 00003, 2020-5-10

 

2、降序

arrays.reverse();

输出结果为:

user3, 00003, 2020-5-10
  user2, 00002, 2020-5-13
  user1, 00001, 2020-5-15

 

五、javascript 多维数组的应用

网站开发中,经常要显示产品分类和地区,产品分类有“编号、名称和父类”等属性,地区也有“编号、名称和父编号”等性,每条记录有多个属性(多条记录就是 list 列表),用一维数组无法实现,需要用多维数组实现。下面以实现产品分类为例:

javascript 数组定义:

var lists = new Array();
  for (var i = 0; i < 100; i++) {
    lists[i] = new Array("分类编号" + i, "分类名称" + i, "父类编号");
  }

读取数组元素:

取第三条记录的分类编号:lists[2][0];

取第三条记录的分类名称:lists[2][1];

取其它记录的字段属性,依次类推即可,注意数组的开始索引(下标)是0就行了。

 

C# 中的 list 列表可以是一个类(即字段属性可以是不同的类型),javascript 数组的元素需要是同一类型,遇到字段属性有不同的情况(如 int、string),可以把所有 int 定义为一个数组,所有 string 定义为另一个数组;或者数组元素就是一个自定义类对象。