js中数组相关方法汇总

数组相关方法



详细解读:
注:变异方法标红
1.pop——删除并返回数组的最后一个元素。
语法:arrayObject.pop()
返回值:arrayObject最后一个元素。

var arr = [1,2,3,4];
var result = arr.pop();
console.log(arr); // [1, 2, 3]
console.log(result) // 4

2.push——向数组的末尾添加一个或者更多元素,并返回新的长度。
语法:arrayObject.push(newelement1,newelement2,…,newelementX)
返回值:数组新的长度

3.reverse——用于颠倒数组中的元素顺序。
语法:arrayObject.reverse()
注:该方法会改变原来数组,而不是创建新数组。

4.shift——用于把数组的第一个元素从其中删除,并返回该元素
返回值:数组原来的第一个元素的值。

5.unshift——向数组的首部添加一个或者更多元素,并返回新的长度。

6.sort——用于对数组的元素进行排序
语法:arrayObject.sort(sortby)
返回值:对数组的引用。

let arr = [25,148,12,6,38];
let result = arr.sort();
console.log(result)   //[12, 148, 25, 38, 6] //这是按照字符进行排序的
console.log(arr)	//[12, 148, 25, 38, 6]
let arr = [25,148,12,6,38];
let result = arr.sort((a,b) => a - b);
console.log(result)   //[6, 12, 25, 38, 148] //升序排序
console.log(arr)	//[6, 12, 25, 38, 148]

总的来说,数组的sort方法里面的参数是一个回调函数,有俩个值,返回值如果是第一个值减去第二个值那么就是从小到大排序,如果是第二个值减去第一个值就是从大到小排序。
_
7.splice——向/从数组中添加/删除项目,然后返回被删除的项目。
语法:arrayObject.splice(index,howmany,item1,…,itemX)
参数:index:规定添加/删除项目的位置,可以是负数
   howmany:要删除的项目数量,为零,表示不删除。
  item1-itemX:向数组添加的新项目。
-向数组指定位置添加元素-

let arr = [1,2,3];
let result = arr.splice(2,0,4,5); //向数组索引为2的地方添加两个元素,分别是4和5
console.log(result)   //Array(0)
console.log(arr)	//[1,2,4,5,3]

-从数组指定位置删除指定数目的元素-

let arr = [1,2,3];
let result = arr.splice(1,2); //从数组中索引为1的位置删除两个元素
console.log(result)   //[2,3] //返回删除的数组
console.log(arr)	//[1]

8.concat()——用于链接两个或者多个数组** (不改变原数组)**
语法:arrayObject.concat(arrayX,arrayX,…,arrayX)
参数:可以是具体要合并的数组元素也可以是一个数组对象。
返回值:一个新的数组。

9.join()——用于把数组中的所有元素放入一个字符串中。(不改变原数组)
语法:arrayObject.join(separator)
参数:分隔符
返回值:一个字符串。

10.slice——从已有的数组中返回选定的元素。(不改变原数组)
语法:arrayObject.slice(start,end)
参数:start:规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。
   end:规定从何处结束选取。
返回值:一个新的数组,包含start到end的arrayObject中的元素。
注:(截取的数组不包含结束索引对应的元素)
(如果不指定给开始和结束的索引,则直接拷贝数组)

let arr = [1,2,3,4,5,6];
let result = arr.toString();
console.log(result)   //1,2,3,4,5,6
console.log(arr)	//[1,2,3,4,5,6]

11.toString——数组转字符串,并返回结果。(不改变原数组)
语法:arrayObject.toString()
注:数组中的元素之间用逗号分隔,相当于使用join方法。

12.map——遍历数组中的每一个元素,提供一个函数用来操作元素,结果最为一个新的数组返回。(不改变原数组)

var arr = [1,2,3,4];
var result = arr.map(t=>t*2);
console.log(arr); //[1, 2, 3, 4]
console.log(result) // [2, 4, 6, 8]

13.forEach——对数组的每个元素执行一次提供的函数,没有返回值。(不改变原数组)

var arr = [1,2,3,4];
arr.forEach(function(currentValue,index,arr){
	v=v+2;
  //currentValue:当前元素
  //index:当前索引
  //arr:原数组
});
console.log(arr); //[1, 2, 3, 4]

14.filter——对数组中的每一个元素进行判断,将满足条件的元素作为一个新的数组返回,新数组是满足条件的所有元素。(不改变原数组)

var arr = [1,2,3,4];
var res = arr.filter(function(v,i){
		if(v>2){
				return v
		}
});
console.log(arr); //[1, 2, 3, 4]
console.log(res); //[3,4]

15.every——对数组中的每一个元素进行判断,数组中的每一个元素都满足条件,返回true,否则返回false。(不改变原数组)

16.some——对数组中的每一个元素进行判断,数组中的至少一个元素满足条件,返回true,否则返回false。(不改变原数组)

17.reduce——对数组中的所有元素进行操作后,返回一个结果。**(不改变原数组)
语法:array.reduce((reslute, currentValue, index, array) => {}, initialValue)适合用来计算数组某一指定内容的累加或者其他运算结果的总结果。
参数说明:
reslute:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值
c****urrentValue:数组中正在处理的元素。
index:数组中正在处理的当前元素的索引
array:调用reduce()的数组
initialValue:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

var arr = [1,2,3,4];
var res = arr.reduce(function(a,b){
	return a+b
});
console.log(arr); //[1, 2, 3, 4]
console.log(res); //10
let arr = [1, 2, 3];
const result = arr.reduce((res, cur) => {
	return res += cur;		//注意要把每一次的计算结果返回给res。
},0);	//这个0是res的初始值,可改为任意数字。
console.log(result)	// 6
		const baseAttr = {
		  min: "%s最小长度为:min",
		  max: "%s最大长度为:max",
		  length: "%s长度必须为:length",
		  range: "%s长度为:range",
		  pattern: "$s格式错误"
		};
		const attrs = Object.keys(baseAttr).reduce((attrs, key) => {
			console.log(attrs)
		  attrs[key] = (attr, message = "", opt = {}) => {
		    const _attr =
		      key === "range" ? { min: attr[0], max: attr[1] } : { [key]: attr };
		
		    return {
		      message: message.replace(
		        `:${key}`,
		        key === "range" ? `${attr[0]}-${attr[1]}` : attr
		      ),
		      type: "string",
		      ..._attr,
		      ...opt
		    };
		  };
		  // bindMessage(attrs[key], baseAttr[key]);
		  return attrs;
		}, {});

18.includes——判断一个数组是否包含一个指定的值,如果是返回true。
语法:arr.includes(searchElement)
   arr.includes(searchElement, fromIndex)
参数:searchElement:需要查找的元素值
   fromIndex:从该索引处开始查找

let site = ['runoob', 'google', 'taobao'];
site.includes('runoob'); 
// true 
site.includes('baidu'); 
// false

var arr = ['a', 'b', 'c'];
arr.includes('c', 3);   //false
arr.includes('c', 100); // false

var arr = ['a', 'b', 'c'];
arr.includes('a', -100); // true

19.indexOf()——返回数组中某个指定的元素位置,如果在数组中没找到指定元素则返回 -1。
语法:array.indexOf(item,start)

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple"); //2

20.new Set(arr)——es6新增数组方法,保证所有元素的唯一性。

let set6 = new Set([1, 2, 2, 3, 4, 3, 5])
console.log(set6)//{1, 2, 3, 4, 5}

21.提取数组指定深度的方法
flat(Infinity/空) 
返回值是遍历到的所有元素集合。

let arr = [1,2,[3,4,[5,6]]],
	res = arr.flat(Infinity),  //无限递归,直到最后
	res2 = arr.flat();		//如果不传参数那么只递归一次
console.log(arr)   //[1,2,[3,4,[5,6]]]
console.log(res)   //[1, 2, 3, 4, 5, 6]
console.log(res2)	//[1,2,3,4,[5,6]]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值