数组的常见方法笔记

105 阅读4分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情

前言

最近在写算法的时候发现JS在写算法时对数组的增删查改的改动操作较多,所以在这里利用每天的写作习惯对数组的常见操作方法做一个总结和笔记

  • push()
  • unshift()
  • splice()
  • concat() 以上三个方法都能对数组的元素进行新增,但是几个操作方法之间有区别,concat不会影响原数组

push()

push()是将元素添加到数组末尾,并返回数组的最新长度,常用于对于一个空数组中,另外一个数组循环改变push元素到空数组中进行处理

    let arr = []; // 新建数组
    let arrs = arr.push("1", "2"); // 将俩个元素push到colors中
    console.log(arr) // [ '1', '2' ] //原数组被改变
    console.log(arrs) // 2

unshift()

unshift()是将元素添加到数组开头,然后返回新的数组长度,适合的场景会存在于删掉列表的第一条数据,就可以用到unshift这个方法

 let arr = new Array('3'); // 新建数组
 let arrs = arr.unshift("1", "2"); // 从数组开头推入两项
 console.log(arr);//[ '1', '2', '3' ]
    console.log(arrs);// 3

splice

需要传入三个参数,分别是开始位置、0(要删除的元素数量)、插入的元素,返回空数组,适用的场景是对数组的某一个下标的元素做修改,或者在某个下标的位置增加元素替换

let arr = ["1", "2", "3"];
let arrs = arr.splice(1, 0, "0.5", "0.6")
console.log(arr) // [ '1', '0.5', '0.6', '2', '3' ]
console.log(arrs) // []

concat()

concat会新创建一个数组,然后将参数添加到数组末尾,最后返回这个新构建的数组,不会影响原始数组,适用场景是连接俩个新旧数组,如果不用这个数组,那么我们会用push加循环的方法,将旧数组for循环的方法将元素push到新数组中

let arr = ["1", "2", "3"];
let arrs = arr.concat("4", ["5", "6"]);
console.log(arr); // [ '1', '2', '3' ]
console.log(arrs); // [ '1', '2', '3', '4', '5', '6' ]

pop()

pop() 方法用于删除数组的最后一项,返回被删除的项,场景是

let arr = ["1", "2"]
let item = arr.pop(); // 取得最后一项
console.log(item) // 2
console.log(arr.length) // 1

some()

对数组每一项都执行后面的函数函数,如果有1个元素返回 true ,则整个方法返回 true 通常用于判断数组中是否存在某个值,比如数组中是否存在数字2,就可以用下面的方法

let arr = [1, 2, 3, 4, 5, 4, 3, 2, 1];
    let arrs = arr.some((item, index, array) => item > 2);
    console.log(arrs) // true

every()

对数组每一项都运行传入的测试函数,如果所有元素都返回 true ,则这个方法返回 true 从字面意思我们可以看出,every是判断每一项,如果有一项不符合,其实也就返回的是false

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let everyResult = numbers.every((item, index, array) => item > 2);
console.log(everyResult) // false

forEach()

对数组每一项都运行传入的函数,没有返回值 forEach没什么什么固定的返回,并且foreach是不能中断的,如果再foreach中途使用break,是无效的,并且没有返回值,只是对数组每个值做一个循环,循环的内容我们可以自定义

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
numbers.forEach((item, index, array) => {
    // 执行某些操作
});

filter()

对数组每一项都运行传入的函数,函数返回 true 的项会组成数组之后返回 filter又叫过滤,我们可以在一个数组中过滤出我们想要的数组,把不想要的数据去掉,比如在下面数组中过滤出大于2的数据

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let filterResult = numbers.filter((item, index, array) => item > 2);
console.log(filterResult); // 3,4,5,4,3

map()

对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组 map的方法和foreach有点像,但是map是有返回值的,将map后的数据作为一个新数组返回,比如将所有的值都乘以2 如果用foreach的话,numbers返回的就是乘以后的数组,但是map不会改变原数组,而是会返回一个新的数组出来

let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let mapResult = numbers.map((item, index, array) => item * 2);
console.log(numbers) // 1, 2, 3, 4, 5,4, 3, 2, 1
console.log(mapResult) // 2,4,6,8,10,8,6,4,2