关于是否改变原始数组方法的归纳

常用数组方法:push、pop、concat、splice、slice、reverse、shift、unshift、join、some、every、sort、indexOf、lastIndexOf

ES6数组扩展:扩展运算符、Array.form()、Array.of()、find、findIndex、fill、extries、keys、values、includes、flat、flatMap

不改变原始数组的方法
slice()方法

从已有的数组中返回指定的元素,提取字符串的某个部分

let arr = ['a','b','c'];
let arr2 = arr.slice(1);
console.log(arr,arr2); //['a','b','c']   ['b','c']
concat()方法

连接两个或多个数组,返回被连接数组的一个副本

arr.concat(arrayX,arrayX…arrayX);

let a = [1,2,3];
let b = [3,4,5,6];
let c = a.concat(b);
console.log(c); //a和b不变,c为[1,2,3,3,4,5,6]
join()方法

数组中的所有元素通过制定的分隔符放入一个字符串

let a = [1,2,3];
a.join();  //"1,2,3"
a.join('-'); //"1-2-3"
indexOf()方法

返回数组中指定元素第一次出现的位置,如果所有成员都不符合,则返回-1

array.indexOf(item, start);start为在数组中开始检索的位置,省略该参数,则从头开始

let a = [1,2,3,4]
a.indexOf(2); //1
find()方法

找出第一个符合条件的数组成员,回调函数的三个参数为当前值、当前位置和原数组

let a = [1,2,3,4];
a.find((item,i) => item < 3); //1
findIndex()方法

返回第一个符合条件的数组成员的位置,如果所有成员都不符合,则返回-1

let a = [1,2,3,4];
a.findIndex((item,i) => item > 5); //-1
a.findIndex((item,i) => item == 2); //1数组成员所在位置
find()和findIndex()的高阶用法

参数除了回调函数之外,还可以接收第二个参数,用来绑定回调函数的this对象,回调函数中的this对象指向person对象

function f(v) {
	return v > this.age;
}
let person = {name: 'john',age: 20}
let a = [1,2,3,4];
let b = [20,21,22,23]
a.find(f,person); //undefined
b.find(f,person); //21

a.findIndex(f,person); //-1
b.findIndex(f,person); //1
indexOf()和findIndex()的不同

indexOf()方法无法识别数组的NaN成员,findIndex()可以借助Object.is方法做到

[NaN].indexOf(NaN) //-1
[NaN].findIndex(y => Object.is(NaN,y));
改变原始数组的方法
push()方法

向数组的末尾添加一个或多个元素,并返回新的长度

let a = [1,2,3,4]
a.push(5,6);
console.log(a.push(5,6)) //6-数组长度
console.log(a); //[1, 2, 3, 4, 5, 6]
unshift()方法

向数组的开头添加一个或多个元素,并返回新的长度

let a = [1,2,3,4];
console.log(a.unshift(0)); // 5
console.log(a); //[0,1,2,3,4]
pop()方法

删除并返回数组的最后一个元素

let a = [1,2,3,4]
console.log(a.pop()); //4
console.log(a); //[1,2,3]
shift()方法

删除并返回数组的第一个元素

let a = [1,2,3,4];
console.log(a.shift()); //1
console.log(a); //[2,3,4]
splice()方法

添加或者删除数组中的元素,会改变原始数组,两个参数是删除,三个参数是在删除的基础上再添加新元素

array.splice(index,howmany,item1,…itemx);index为必需

let a = [1,2,3,4];
a.splice(2,1); //第一个参数为要删除元素的位置,第二个参数为要删除的个数,返回删除元素 [3]
a.splice(2,0); //从第二个元素开始,删除0个,返回空数组 []
let b = ['a','b','c','d','e'];
let bResult = b.splice(2,1,apple,banana); 
console.log(b,bResult); //[a,b,apple,banana,e]    [c]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值