JS中数组的方法

JS中数组的方法

JS中数组的方法

写在前面

序号方法功能是否改变原数组
1arr.sort()给数组排序,先数字后英文再中文Y
2arr.reverse()反转数组元素Y
3arr.join(str)数组划分为字符串,数组元素以str分隔(默认是逗号)N
4arr.concat(arr1,arr2,…,arr3)合并数组,可以是多个,多个之间用逗号隔开“,”N
5arr.pop()删除arr数组最后一个元素,返回弹出的元素值(尾删Y
6arr.push(data)给arr数组最后添加一个data元素,返回新数组的长度(尾增Y
7arr.shift()删除arr数组第一个元素,并反弹出的元素值(前删Y
8arr.unshift(data)给arr数组最前面添加一个data元素,返回新数组的长度(前增Y
9arr.slice(start,end)截取数组,返回arr中start到end之间的元素(不包括最右边的N
10arr.splice()删除指定位置,并替换,返回删除的数据Y
11arr.toString()直接转为字符串,并返回N
12arr.valueOf()返回数组对象的原始值N
13arr.indexOf(item,start)找出元素的下标(索引位置从0开始,如果在数组中没找到指定元素则返回 -1)N
14arr.lastIndexOf()反向查询并返回数据的索引N
15arr.forEach(function(currentValue, index, arr))用于调用数组的每个元素,并将元素传递给回调函数,没有任何返回值N,会遍历数组
16arr.map(function(currentValue,index,arr))返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值(遍历并修改数组中的数据,注意返回值)N,会遍历数组
17arr.filter(function(currentValue,index,arr))将函数执行一遍,只有在布尔值为true的时候才会返回该数据(遍历并过滤数组中的数据,注意返回值)N,会遍历数组
18arr.some(function)对数组中的每一项进行判断,只要一个为true,那就是trueN,会遍历数组
19arr.every(function)对数组中的每一项进行判断,只要必须所有为true,才是trueN,会遍历数组
20arr.reduce(function)reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值N,会遍历数组
21arr.reduceRight()反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回N,会遍历数组

arr也可写成array

创建数组的方法

  1. 使用new关键字来创建一个数组(构造函数)
var arr = new Array(1,2,3,4,5,6,7,8);
console.log(arr);

注:

1、new 和 Array关键字,Array 首字母大写;
2、数组元素可以写多个,多个之间用逗号隔开“,”;
3、var arr = new Array[ ]; 错误的写法。

  1. 使用中括号[ ]来创建数组(字面量)
var arr = [1,2,3,4,5,6,7,8];
console.log(arr);

注意:
1.当接收一个数值类型数据的时候,字面量就是一个数据,构造函数是一个长度
2.任何两个对象(数值也属于对象)都不相等,哪怕长得一样

	var arr = [5];				//字面量
	var arr2 = new Array(5);		//构造函数
	console.log(arr)	//Array(1)
	console.log(arr2)	//Array(5)
	
	console.log(arr.length)		//1
	console.log(arr2.length)	//5
	// 当接收一个数值类型数据的时候,字面量就是一个数据,构造函数是一个长度
	
	var arr = [];
	var arr2 = [];
	console.log(arr == arr2);	//false
	// 任何两个对象都不相等,哪怕长得一样

使用方法

1. arr.sort(); 给数组排序,先数字后英文再中文;

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.sort());

在这里插入图片描述
sort的数值比较是逐位比较的,所以对于不同位数比较会出错

var arr = [45,23,67,12,89,3];
console.log(arr.sort());	//[12, 23, 3, 45, 67, 89]

此时有另一种方法可以用sort实现完美的排序

var arr = [45,23,199,67,101,12,89,3,1000];
arr.sort(function(a,b){
	return b-a;
});
console.log(arr);	//[1000, 199, 101, 89, 67, 45, 23, 12, 3]
//或者
var arr2 = [45,23,199,67,101,12,89,3,1000];
arr2.sort(function(a,b){
	return a-b;
	});
console.log(arr2)	//[3, 12, 23, 45, 67, 89, 101, 199, 1000]

2. arr.reverse(); 反转数组元素;

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.reverse());

在这里插入图片描述

3. arr.join(str); 将数组划分为字符串,数组元素以str分隔(默认是逗号);

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.join('-'));	//4-3-5-2-6-hello-你好

4. arr.concat(arr1,arr2,…,arr3); 合并数组,可以是多个,多个之间用逗号隔开“,”;

var arr = [4,3,5,2,6,'hello','你好'];
var arr1 = ['合并','一句话'];
var arr2 = ['world',];
console.log(arr.concat(arr1,arr2)); 

在这里插入图片描述

5. arr.pop(); 尾删;

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.pop());		//你好
console.log(arr)	//[4, 3, 5, 2, 6, "hello"]

6. arr.push(data); 尾增;

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.push('新加的元素'));	//8
console.log(arr)	//[4, 3, 5, 2, 6, "hello", "你好", "新加的元素"]

console.log(arr.length); //用length获取数组的长度

7. arr.shift() 前删;

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.shift());	//4
console.log(arr)	//[3, 5, 2, 6, "hello", "你好"]

8. arr.unshift(data); 前增;

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.unshift('新加的元素'));		//8
console.log(arr)	//["新加的元素", 4, 3, 5, 2, 6, "hello", "你好"]

9. arr.slice(start,end);分割数组,返回arr中start到end之间的元素(最右边的不包括);

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.slice(1,3));	//最右边的不包括[3, 5]
console.log(arr)	//[4, 3, 5, 2, 6, "hello", "你好"]

在这里插入图片描述

10.arr.splice(start,num); 删除指定位置,并替换,返回删除的数据

当没有传参时,显示的是原数组;当传入start时表示从索引为start的数据开始删除,直到数组结束

var arr = [2,4,6,8,12,9];
console.log(arr.splice());	//[]
console.log(arr);	//[2, 4, 6, 8, 12, 9]
console.log(arr.splice(2))	//[6, 8, 12, 9]
console.log(arr)	//[2, 4]

当传入start和num时表示从索引为start的数据开始删除,删除num个

var arr2 = [2,4,6,8,12,9];
console.log(arr2.splice(2,3))	//[6, 8, 12]
console.log(arr2)	//[2, 4, 9]

当传入更多时表示从索引为start的数据开始删除,删除num个,并将第三个参数及后面所有参数,插入到start的位置

var arr3 = [2,4,6,8,12,9];
console.log(arr3.splice(2,0,"99","98","97"));	//[]
console.log(arr3)	//[2, 4, "99", "98", "97", 6, 8, 12, 9]

// console.log(arr3.splice(2,1,"zs","ls"));	//[6]
// console.log(arr3)	//[2, 4, "zs", "ls", 8, 12, 9]

11.arr.toString(); 直接转为字符串,并返回

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.toString());     //4,3,5,2,6,hello,你好
console.log(arr); 	//[4, 3, 5, 2, 6, "hello", "你好"]

12. arr.valueOf(); 返回数组对象的原始值 ,(一般情况下其实就是数组自身)

var arr = [4,3,5,2,6,'hello','你好'];
console.log(arr.valueOf());     //[4, 3, 5, 2, 6, "hello", "你好"]
console.log(arr); 	//[4, 3, 5, 2, 6, "hello", "你好"]
console.log(arr.valueOf() == arr);  //true

13. arr.indexOf(data,start); 找出元素的下标(索引位置从0开始,如果在数组中没找到指定元素则返回 -1);

start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数

var arr = ["a","b","c","d","e"];	
console.log(arr.indexOf("b"));	//1
console.log(arr.indexOf("e"));	//4
console.log(arr.indexOf("e",-1));	//4
console.log(arr.indexOf("e",2));	//4
console.log(arr.indexOf("e",4));	//4
console.log(arr.indexOf("9"));	//-1

14.arr.lastIndexOf(data,start); 反向查询并返回数据的索引

从右向左,查询在数组中出现的位置,start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1

var arr = ["a","b","c","d","e"];	
console.log(arr.lastIndexOf("b"));	//1
console.log(arr.lastIndexOf("e"));	//4
console.log(arr.lastIndexOf("e",-1));	//4
console.log(arr.lastIndexOf("e",2));	//-1
console.log(arr.lastIndexOf("e",4));	//4
console.log(arr.lastIndexOf("9"));	//-1

15. arr.forEach(function(currentValue, index, arr)); 用于调用数组的每个元素,并将元素传递给回调函数,没有任何返回值;

var arr = ["a","b",255,512,"hello"];
var a = arr.forEach(function(value,index){
	console.log(value);
	console.log(index);
	})

在这里插入图片描述

释:
currentValue:必选。当前元素
index:可选。当前元素的索引值
arr:可选。当前元素所属的数组对象

16. arr.map(function(currentValue,index,arr)) 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值;

var arr = [4,5,6,7,8,"hello"];
var b = arr.map(function(value,index){
	console.log(value);
	console.log(index);
	})

在这里插入图片描述

注:
map()不会对空数组进行检测,map() 不会改变原始数组

17. arr.filter(function(currentValue,index,arr)) 将函数执行一遍,只有在布尔值为true的时候才会返回该数据;

var arr = [4,5,6,7,8,"hello"];
var c = arr.filter(function(value,index){
	console.log(value);
	console.log(index);
	})

在这里插入图片描述

注:
filter() 不会对空数组进行检测, 不会改变原始数组

18. arr.some(function),对数组中的每一项进行判断,若都不符合则返回false,否则返回true;

19.arr.every(function) 对数组中的每一项进行判断,若都符合则返回true,否则返回false

20.arr.reduce(function); reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值

21.arr.reduceRight(); 反向归并,同forEach,迭代数组的所有项,并构建一个最终值,由reduceRight返回

1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值