js数组操作大全(带实例),含隐性定义、三种添加和删除元素的方法、排序、数组转字符、数组合并和多维数组

亮术网 2020-01-04 本网原创

Javascript 数组的操作包括定义、添加、删除、读取、修改、复制、排序、截取与合并、把数组所有元素转为字符串等。定义数组有两种方法,一种为新建一个数组,另一种为隐性定义,即根据所赋的值确定。添加和删除元素有三种方法,分别为 push()、unshift()、splice()、pop()、shift()、splice()。

定义 Javascript 数组后,可以给它任意添加属性,也可以对数组元素排序;排序分为升序和降序,分别用 sort() 和 reverse() 方法。两个数组可以合并为一个,一个数组和一串字符也可以合并为一个数组,用 concat() 方法实现;另外,可以用 slice() 方法提取指定数目的数组元素。数组可以转为字符串,分别用 join()、toString() 和 toLocaleString() 方法实现。

Js 多维数组有两种定义方法,一种为 new Array(new Array(), new Array(), ...),另一种为 [[,, ...],[,, ...], ...]。

 

1、数组的定义:

//定义一个数组

var arrObj = new Array();

//定一个指定长度的数组

var arrObj = new Array([size]);

//定义一个数组并赋值

var arrObj = new Array([element0[, element1[, ...[, elementN]]]]);

 

举例:

var arrObj1 = new Array();//定一个空数组

var arrObj2 = new Array(10);//定一个 10 个元素的数组

var arrObj3 = new Array(1,2,3,4,5);//定一个数组并初始化 5 个元素

var arrObj3 = [1,2,3,4,5] //隐性声明

 

2、添加数组元素:

//把一个或多个新元素添加到数组末尾,并返回数组新长度

arryObj.push([item1 [item2 [. . . [itemN ]]]]);

//把一个或多个新元素添加到数组前面,数组中的元素自动后移,返回数组新长度

arrObj.unshift([item1 [item2 [. . . [itemN ]]]]);

//从 start 位置开始删除由 deleteCount 指定个数的元素,然后从该位置起插入 item1,item2,...,itemN,并返回删除的元素。

arrObj.splice(start,deleteCount,[item1[, item2[, . . . [,itemN]]]]);

 

举例:

var a = new Array(1,2,3,4,5);

a.push(6);//结果:a:(1,2,3,4,5,6)

a.unshift(6); //结果:a:(6,1,2,3,4,5)

 

a.splice(2,0,6); //结果:a:(1,2,6,3,4,5)

var b = a.splice(2,2,6); //结果:a:(1,2,6,5);b:(3,4)

 

a[1000000] = 10; //把 10 赋给索引为 1000000 的元素,说明 Javascript 可以把值赋给远远超出数组长度的索引。

 

3、删除数组元素:

arrObj.pop(); //移除最后一个元素并返回该元素值,如果数组为空则返回 undefined

arrObj.shift(); //移除最前一个元素并返回该元素值,剩余元素自动前移

arrObj.splice(start,deleteCount); //删除从指定位置(start)开始的指定数量(deleteCount)的元素,最后以数组形式返回所有被移除的元素

 

举例:

var a = new Array(1,2,3,4,5);

var b = a.pop();//结果:a:(1,2,3,4);b:5

var c = a.shift(); //结果:a:(2,3,4,5);c:1

var d = a.splice(2,1); //结果:a:(1,2,4,5);d:3

 

4、读取和修改数组元素:

var a = new Array(1,2,3,4,5);

var b = a[1];//读取数组第一个元素,结果:b:2

var c = a[1] = 6; //修改数组第一个元素,结果:a:(1,6,3,4,5);c:6

 

5、给数组添加属性:

var arrPerson = new Array();

arrPerson.name = "李亦月";//添加一个“姓名”属性

arrPerson.age = 22;//添加一个“年龄”属性

 

6、数组元素的排序:

arrObj.sort(); //对数组元素排序,返回数组地址

arrObj.reverse(); //把元素按倒序排列,返回数组地址

 

举例:

var b = [6,7,8,5,3,2,1];

b.sort(); //排序数字数组,结果:1,2,3,5,6,7,8

 

var arr = ["d", "f", "c", "a", "g"];

b.sort(); //排序对象(字符)数组, 结果:a,c,d,f,g

 

var a = new Array(1,2,3,4,5);

a.reverse();////逆向排序数字数组,结果:5,4,3,2,1

 

var arr = new Array("d", "f", "c", "a", "g");

arr.reverse();//逆向排序对象(字符)数组,结果:arr: g,a,c,f,d,结果不正确

 

7、数组的截取与合并:

arrObj.slice(start, [end]); //以数组的形式返回从 start 到 end 的所有元素,但不包括 end 对应的元素;如果省略 end,则返回 start 之后的所有元素

arrObj.concat([item1[, item2[, . . . [,itemN]]]]); //把多个数组(或字符串,数组和字符串的混合)合并为一个数组,返回合并后的新数组

 

举例:

var a = new Array(1,2,3,4,5,6);

var b = a.slice(2,4);//结果:b:(3,4);

var b = [8, 9, 10];

var c = a.concat(b);//结果:c:(1,2,3,4,5,6,8,9,10);

var d = a.concat("abc");//d:(1,2,3,4,5,6,abc);

 

8、数组转字符:

arrObj.join(separator); //返回把数组元素转为字符后的字符串,中间用 separator 隔开。

arrObj.toString();//把数组转为一个字符串,并返回该字符串

arrObj.toLocaleString(); //把数组转换为本地字符串。与 toString() 相似, 在 FireFox 完全相同;在 ie 下,如果是数字,则会在后面补上两位小数;如果是字符串,则会在“,”后加上一个空格。

 

举例:

var a = new Array(1,2,3,4,5,6);

var b = a.join("");//结果:b:123456;

var c = a.join("-");//结果:c:1-2-3-4-5-6;

 

var d = a.toString();//结果:d:1,2,3,4,5,6;

var e = a.toLocaleString();//结果:e:1.00,2.00,3.00,4.00,5.00,6.00;Chrome 或火狐 1,2,3,4,5;

 

var arr = new Array(); arr[0] = "abc"; arr[1] = "def"; arr[2] = "gh";

var r = arr.toLocaleString();//结果:r:abc, def, gh;

 

 

9、多维数组:

(1)方法一

var matrix = [
     [1, 2, 3, 4],
     [5, 6, 7, 8],
     [9, 10, 11,12]
    ];

matrix1[2][2] //返回 11

 

(2)方法二

var matrix = new Array(
      new Array(1, 2, 3, 4),
      new Array(5, 6, 7, 8),
      new Array("a", "b", "c", "d")
    );

matrix1[2][2] //返回 c