JS数组常用方法

数组中一些API方法

1. isArray()

检测变量是否是一个数组,如果是数组返回true,反则false

语法:Array.isArray(arrayObject)

var arr = "我不是数组,我是字符串";
console.log(Array.isArray(arr)); // false
        
var arr_A = ["小何","小明","小红"];
console.log(Array.isArray(arr_A)); // true

补充:instanceof方法也是可以检测变量是否是一个数组。

语法:arrayObject instanceof Array

var arr_A = ["小何","小明","小红"];
console.log(arr_A instanceof Array); // true

2. 队列方法 -(后加后减)

push()

向数组中末尾位置添加值进去

语法:arrayObject.push(value1,value2)可添加多个值,以逗号隔开

var arr = ["小何","小明","小红"];
// 这里是将小王同学添加到arr数组中最后一个位置
var arr_A = arr.push("小王同学");
console.log(arr);  // ["小何", "小明", "小红", "小王同学"]

shift()

向数组开头位置移除一个值

语法:arrayObject.shift()

var arr = ["小何","小明","小红"];
// 这里将小何移除
var arr_A = arr.shift();
console.log(arr);  // ["小明","小红"]

2.1 反向队列方法 -(前加后减)

unshift()

是向数组开头位置添加一个值

语法:arrayObject.unshift(value1,value2) 可添加多个值,以逗号隔开

var arr = ["小何","小明","小红"];
var arr_A = arr.unshift("小王同学");
console.log(arr);  // ["小王同学","小何","小明","小红"]

pop()

是向数组末尾位置移除一个值

语法:arrayObject.pop()

var arr = ["小何","小明","小红"];
var arr_A = arr.pop();
console.log(arr);  // ["小何","小明"]

3. 重排序数组

reverse()

是颠倒数组中元素的顺序

语法:arrayObject.reverse()

var arr = ["1","2","3","4","5","6","7"];
var arr_A = arr.reverse();
console.log(arr);  // ["7", "6", "5", "4", "3", "2", "1"]

sort()

用于对数组的元素进行排序。是将数组中数值转换为字符串,然后按ASCLL码进行比较大小,最后从小到大依次排序 。也就是说如果这个方法里不写参数,他默认是先将数值转换为字符串,然后根据ASCLL码进行比较。如果要写参数,就必须是一个函数,这个函数为数值的排序方式。以下有2种代码,一种是不传参数,一种是传参数,看下具体有什么不同的地方。

语法:arrayObject.sort(sortby) 为可选。规定排序顺序。必须是函数。

代码1:不传参数

var arr = [1,2,10,20,5];
var arr_A = arr.sort();
console.log(arr);  // [1,10,2,20,5]

以上代码是不传参数,会默认转为字符串,然后按Unicode编码再进行比较,我们要怎么才能知道这几个数字的 Unicode 编码是多少呢?可以使用charCodeAt()方法,它是返回字符的 Unicode 编码的。我们使用这个方法看下上面几个数字的对应的 Unicode 编码是多少,然后看下不传参数程序排序是不是按这个排序的。

语法:stringObject.charCodeAt(index) index : 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。

console.log("1".charCodeAt()); // 这是"1"的Unicode编码为 49
console.log("2".charCodeAt()); // 这是"2"的Unicode编码为 50
console.log("10".charCodeAt()); // 这是"10"的Unicode编码为 49
console.log("20".charCodeAt()); // 这是"20"的Unicode编码为 50
console.log("5".charCodeAt()); // 这是"5"的Unicode编码为 53

最后通过charCodeAt()方法已将字符对应的Unicode编码显示出来,按照不传参数的排序原理确实是按Unicode编码比较排序的。

代码2:传参数,sort()方法不传参数下规则是先转字符串,然后按Unicode编码进行比较,如果需要传参数,参数一定要是一个函数,这个函数为数值排序方式。

var arr = [1,2,10,20,5];
var arr_A = arr.sort(function add(a, b) {
    return a - b;
   });
console.log(arr);  // [1, 2, 5, 10, 20]

4. 操作方法

concat()

是用于连接两个或多个数组。

语法:arrayObject.concat(array1,array2,.....,arrayx)

情况1: 单个数组连接

var arr = [1,2,3];
var arr1 = arr.concat(4,5);
console.log(arr1);  // [1,2,3,4,5]

情况2: 数组1与数组2,两个数组进行连接

var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = arr1.concat(arr2);
console.log(arr3);  // [1, 2, 3, 4, 5, 6]

情况3: 多个数组连接

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var arr3 = [7, 8, 9];
var arr4 = [10, 11, 12];
var arr5 = [13, 14, 15];
var result = arr1.concat(arr2,arr3,arr4,arr5);
console.log(result); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

slice()

从已有的数组中返回选定的元素,也叫数组截取。

语法:arrayObject.slice(start,end)

情况1: 不传参数 ===> 默认截取所有

var color = ["red","green","blue"];
console.log(color.slice());  // 返回一个子数组 ["red","green","blue"]

情况2: 传一个参数 ===> 表示从索引n开始,后面的都会被截取。

var color = ["red","green","blue"];
console.log(color.slice(1));  // [green","blue"]

情况3: 传两个参数 ===> 表示从索引n开始到索引n结束。开始到结束这一段会被截取,然后返回新的子数组。

注意:这里不包含结束索引,包前不包后。例如:slice(2,5),它的意思是从索引2开始到索引5结束,但是返回子数组它是不包含索引5的!

var color = ["red","green","blue","pink","skyblue","yellow","orange","blaek"];
console.log(color.slice(2,5));  // "blue","pink","skyblue" [2-5区间]但是不包含5

splice()

splice() 可删除,可插入,可替换

语法:arrayObject.splice(index,howmany,item1,.....,itemX)

index:索引,howmany:删除多少,item1:要插入的值,可以是多个。

(1)删除:可以删除任意数量的项,只需指定2 个参数:要删除的第一项的位置和要删除的项数。

var color = ["red","green","blue","pink","skyblue","yellow","orange","blaek"];
console.log(color.splice(1,4));  // "green","blue","pink","skyblue"

以上代码color.splice(1,4) 表示从索引1开始删除后4个项。返回删除数值数组。

(2)插入:可以向指定位置插入任意数量的项,只需提供3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。

var color = ["red","green","blue","pink"];
var colors = color.splice(1,0,"orange","blaek")
console.log(color); //  ["red", "orange", "blaek", "green", "blue", "pink"]

以上代码 color.splice(1,0,"orange","blaek") 表示从索引1 "green"开始,删除0个项目,后面两个字符串 “orange”,“blaek” 为要插入的项。注意这里是向索引1 "green"前插入数据,而不是后插入!

(3)替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。

var color = ["red","green","blue","pink","yellow"];
var colors = color.splice(1,2,"orange","blaek")
console.log(color); //  ["red", "orange", "blaek", "pink", "yellow"]

以上代码color.splice(1,2,"orange","blaek") 表示从索引1 "green"开始,删除后2个项目"blue","pink",并插入2个值 "orange","blaek"

5.indexOf()

是查找数组中指定的值,并且返回该指定值的索引位置。

语法:stringObject.indexOf(searchvalue,fromindex)

情况1: 传1个值,也就是查找指定值

var color = ["red","green","blue","pink","yellow"];
var colors = color.indexOf("blue");
console.log(colors); // 2 ===> "blue"

情况2: 这个方法可以传两个参数,参数1:查找值,参数2:查找开始的位置

var color = ["red","green","blue","pink","yellow"];
var colors = color.indexOf("blue",1);
console.log(colors); // 2 

以上代码color.indexOf("blue",1) 表示从索引1 "green"位置查找指定值"blue"注意:如果后面没有查找到该指定值,会返回-1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值