数组的方法(改变原数组和不改变原数组)

1、改变原数组

文章参考csdn博主(很牛):

会改变自身值的9个数组方法_改变数组本身的方法-优快云博客

(1)删除元素(返回值都是被删除的元素):pop(删除最后一个)、shift(删除第一个)

const arr=['a','b','c','d','e']

//均以arr为例
console.log(arr.pop()) //'e'
console.log(arr.shift())//'a'

(2)添加元素(返回值都是数组长度):push(在数组尾部添加)、unshift(在数组头部添加)

const arr=['a','b','c','d','e']
console.log(arr.push('abc')) //6
console.log(arr.unshift('abc'))//6

(3)排序、反转方法(返回值都是数组):sort、reverse

const arr1=[1,5,11,19,20,21,6]
console.log(arr1.sort())

const arr=['a','b','c','d','e']
console.log(arr.reverse())//['e', 'd', 'c', 'b', 'a']

(4)操作数组:splice

——返回一个数组,包含从数组中被删除的元素(如果没有删除元素,则返回空数组)

const arr=['a','b','c','d','e']
console.log(arr.splice(1,1)) //['b']
console.log(arr.splice(0,2,1,2,2)) //['a', 'b'] 此时的arr[1, 2, 2, 'c', 'd', 'e']
console.log(arr.splice(1,0)) //[] 没有删除元素

(5)复制(返回值就是复制后的新数组):copyWithin、fill

——copyWithin

——fill(它主要用于将数组指定区间内的元素替换为某个值):arr.fill(value, start[, end = this.length])

value:是要替换为的元素值,start是开始位置的索引,end是结束位置的索引

const arr=['a','b','c','d','e']
//复制索引2~3(包括2不包括3)位置上的元素,其实就是复制索引2位置的元素3,插入到索引为1的位置。
console.log(arr.copyWithin(1,2,3))// ['a', 'c', 'd', 'd', 'e']
//将索引2~4位置的元素全部替换为1
console.log(arr.fill(1,2,4)) //['a', 'b', 1, 1, 'e']
console.log(arr.fill(1)) //[1, 1, 1, 1, 1]
console.log(arr.fill(1,3))//['a', 'b', 'c', 1, 1]

2、不改变原数组

参考文章(很厉害的):

JS:33种原生JS数组方法(8种改变原数组方法,25种不涉及数组改变的方法)_js数组方法改变原数组-优快云博客

常见:map、forEach、concat、join、slice、filter、some、every、includes、find、findLast、indexOf、lastIndexOf、from、of、toReversed、toSorted、with等

(1)遍历数组 map、forEach、filter

map(返回新数组):对数组每个元素进行调用

forEach(无返回值):遍历数组中每个元素并执行一次提供的操作

filter(返回符合条件的新数组):筛选出符合条件的元素

let arr = [1, 2, 3];
  console.log(arr.map((x) => x * 5)); //[5, 10, 15]
  console.log(arr); // [1, 2, 3]

let arr = [1, 2, 3, 4, 5];
//无返回值,使用console.log输出
  arr.forEach(
      (item) => console.log(item + 1) // 2 3 4 5 6
  );
console.log(arr); // [1, 2, 3, 4, 5]

let arr = [1, 2, 3, 4, 5];
      console.log(arr.filter((x) => x > 3));//[3,4, 5]
      console.log(arr.filter((x) => x > 6));//[]
      console.log(arr);//[1, 2, 3, 4, 5]

(2)查找元素 find、findLast、indexOf、lastIndexOf、findIndex

find、findLast:找到数组中第一个(最后一个)符合提供条件的元素,没有返回undefined

findIndex:查找数组中第一个满足提供的测试函数条件的元素的索引

indexOf、lastIndexOf:查找数组中指定元素的第一个(或最后一个)出现的索引位置。如果没有找到则返回-1

//输出找到的值
let arr = [1, 2, 3];
      console.log(arr.find((x) => x > 1)); // 2
      console.log(arr.find((x) => x > 4)); // undefined
      console.log(arr); // [1, 2, 3]
let arr = [1, 2, 3];
      console.log(arr.findLast((x) => x > 1)); // 3 
      console.log(arr.findLast((x) => x > 3)); // undefined
      console.log(arr); // [1, 2, 3]
//输出索引号
 let arr = [1, 2, 3];
      console.log(arr.findIndex((x) => x === 3)); // 输出:2
      console.log(arr); // 输出:[1, 2, 3]

let arr = [1, 2, 3, 2];
      console.log(arr.indexOf(2)); // 输出:1
      console.log(arr.lastIndexOf(2)); // 输出:3
      console.log(arr); // 输出:[1, 2, 3, 2]

(3)数组中是否包含某个值some、every、includes (返回值true、false),at(读到的元素)

some:检查数组中是否有至少一个元素满足提供的条件

every:检查数组中是否所有元素都满足提供的条件

includes:用来判断一个数组是否包含一个指定的值

at:通过索引直接读取数组元素

let arr = [1, 2, 3];
      console.log(arr.some((x) => x > 2)); // true
      console.log(arr.some((x) => x > 3)); // false
      console.log(arr); // [1, 2, 3]

let arr = [1, 2, 3];
      console.log(arr.every((x) => x > 0)); // true
      console.log(arr.every((x) => x > 2)); // false
      console.log(arr); // [1, 2, 3]

let arr = [1, 2, 3, NaN];
      console.log(arr.includes(1)); // true
      console.log(arr.includes(4)); // false
      console.log(arr.includes(NaN)); // true
      console.log(arr); // [1, 2, 3,NaN]

let myArray = ["apple", "banana", "cherry"];
      console.log(myArray.at(0)); // 输出:"apple"
      console.log(myArray.at(-1)); // 输出:"cherry"

(4)与改变原数组中作用相同但不改变原数组的方法toSpliced(操作数组)、toReversed(反转)、toSorted(排序)

返回值都是新数组

(5)将数组转换为字符串(返回字符串) jion、toString、toLocaleString

let arr = [1, 2, 3];
      console.log(arr.join(",")); //1,2,3

let arr = new Date();
      console.log(arr.toLocaleString()); // 输出:"2024/3/13 15:36:59"
      console.log(arr.toString()); // 输出:"Wed Mar 13 2024 15:36:59 GMT+0800 (中国标准时间)"
      let arr2 = [1, 2, 3];
      console.log(arr2.toString()); // 输出:"1,2,3"
      console.log(arr2.toLocaleString()); // 输出:"1,2,3"

(6)slice:提取某个范围内的数组元素,返回值是一个包含提取的元素的新数组

let arr = [1, 2, 3, 4, 5];
//arr.slice(1, 4)提取的元素从下标1开始,包含下标1。从下标4结束,不包含下标4
      console.log(arr.slice(1, 4)); //[2, 3, 4]
      console.log(arr); //[1, 2, 3, 4, 5]

(7)from、of

Array.from():可以从类数组对象或可迭代对象创建一个新的数组。

Array.of():用于创建一个具有可变数量参数的新数组。

返回:创建的新数组

console.log(Array.from("foo")); // 输出:['f', 'o', 'o']
console.log(Array.of(1, 2, 3)); // 输出:[1, 2, 3]

(8)with:替换数组中的元素(返回替换元素后的新数组

let arr = [1, 2, 3, 4, 5];
//用10来替换索引号为1的元素
      let newArr = arr.with(1,10);
      console.log(arr); // [1, 2, 3, 4, 5]
      console.log(newArr); //[1, 10, 3, 4, 5]

let arr = [1, 2, 3, 4, 5];
      let newArr = arr.with(1,10);
      console.log(arr); // [1, 2, 3, 4, 5]
      console.log(newArr); //[1, 10, 3, 4, 5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值