常用数组方法(二)

136 阅读5分钟

会改变原数组

reverse(). 数组翻转,即颠倒数组中元素的位置

let a=[1,2,3,4,5]
let b=a.reverse()

b   //[5, 4, 3, 2, 1]
a   //[5, 4, 3, 2, 1]
返回值是翻转后的数组

sort().对数组中元素进行排序,但是默认排序顺序是根据字符串 Unicode 码点

let a=[1,22,3,24,15]
let b=a.sort()

b   //[1, 15, 22, 24, 3]
a   //[1, 15, 22, 24, 3]
返回值是排序后的数组

pop().删除数组中的最后一个元素

var a1 = [1, 2, 3, 4];
a1.pop()    //4

a1//[1, 2, 3]
返回的是被删除的元素

push().在数组的尾部添加一个或者多个元素

var a1 = [1, 2, 3, 4];
a1.push()    //4 如果没有插入的值那么返回的长度是当前数组的原长度
var a1 = [1, 2, 3, 4];
a1.push(1,2,3)   //7
a1  //[1, 2, 3,4, 1, 2, 3]
返回的是插入元素后数组的长度

shift().删除数组中的第一个元素

var a1 = [1, 2, 3, 4];
a1.shift()  //1
a1  //[2, 3, 4]
返回的是被删除的元素

unshift().在数组的首部添加一个或者多个元素

var a1 = [1, 2, 3, 4];
a1.unshift()    //4 如果没有插入的值那么返回的长度是当前数组的原长度
var a1 = [1, 2, 3, 4];
a1.unshift(1,2,3)   //7
a1  //[1, 2, 3, 1, 2, 3, 4]
在数组的首部添加一个或者多个元素

splice().具有【增】【删】【改】的功能,具体实例展示👇

//增
var a1 = [1, 2, 3, 4];
a1.splice(2,0,'插入')   //[]返回的是空数组
a1  //[1, 2, "插入", 3, 4]

//删
var a1 = [1, 2, 3, 4];
a1.splice(2,1)   //[3]返回被删除的元素
a1  //  [1, 2, 4] 返回的是删除后剩余的数组元素

//改
var a1 = [1, 2, 3, 4];
a1.splice(2,1,'改')   //[3]返回的是被替换删除掉的元素
a1  //[1, 2, "改", 4]

fill().使用给定的值填充一个数组

接受第二个和第三个参数,分别用于指定填充的起始位置和结束位置
//3个参数
var a1= ['a', 'b', 'c']
a1.fill(7, 1, 2)    //["a", 7, "c"]
a1  //["a", 7, "c"]

//1个参数
var a1= ['a', 'b', 'c']
a1.fill(7)    //["a", 7, "c"]
a1  //[7, 7, 7]
返回值是填充后的数组

不改变原数组

jion().将数组转换成字符串

var a=[1,2,3,4,5]
var b=a.join('-')
 b//返回值 "1-2-3-4-5"
 a //[1,2,3,4,5]
 返回值是转变后的字符串

concoat().合并数组

let a=[1,22,3,24,15]
let c=[1,2,3]
let b=a.concat(c)

a   //[1, 22, 3, 24, 15]
b   //[1, 22, 3, 24, 15, 1, 2, 3]
c   //[1, 2, 3]
返回值是合并生成的新数组

slice().截取数组中的一部分,从开始到结束,截取原则左闭右开(即不包括结束索引),第二个参数可选,不写或大于数组的 length,取之将从开始索引到最后一个参数

let a=[1,22,3,24,15]
let b=a.slice(1,2)
b   //22

let a=[1,22,3,24,15]
let b=a.slice(1,1)
b   //undefined

let a=[1,22,3,24,15]
let b=a.slice(1)
b   //[22, 3, 24, 15]

返回值是截取到的新数组

map().新数组中的每个元素,由原数组中的每一个元素执行相应的函数而来

let a=[1,22,3,24,15]
let b=a.map(item=>item*2)

a   //[1, 22, 3, 24, 15]
b   //[2, 44, 6, 48, 30]
返回值是新创建的数组

filter().过滤判断条件生成新的数组

let a=[1,2,4,'']
let b=a.filter(item=> item>1)

b  //[2, 4]
a  //[1, 2, 4, ""]
返回值是过滤符合条件的新数组

every().查询数组中每一个元素是否都匹配条件,如果都匹配返回 true,只要有一个不符合返回 false,如果是空数组,则直接返回 true

let a=[1,22,3,24,15]
let b=a.every(item=>item>15)
b   // false

let a=[1,22,3,24,15]
let b=a.every(item=>item>=1)
b   // true
a   //[1, 22, 3, 24, 15]

let a=[]
let b=a.every(item=>item)
b   //true

forEach().没有返回值,不会改变原数组,可以通过此方法循环判断数组中的每一个元素,执行相对应的回调

//forEach
let a=[
  {
    name:'张三',
  	order:0
  },
    {
    name:'李四',
  	order:1
  },  {
    name:'王五',
  	order:2
  }
]
let obj1Name
a.forEach(item=>{
  if(item.order==1){
		obj1Name=item.name
	}
})
console.log(obj1Name)   //李四

//filter

let a=[
  {
    name:'张三',
  	order:0
  },
    {
    name:'李四',
  	order:1
  },  {
    name:'王五',
  	order:2
  }
]
let obj1Name
obj1Name=a.filter(item=>{
  return item.order==1
})
console.log(obj1Name)   //[{name: "李四",order: 1}]

reduce().相当于一个累加器,第一个参数表示上一次累计的返回值,第二个参数表示当前的返回值 返回结果是最后累加的总和

const array1 = [1, 2, 3, 4];
const reducer = (prev, curr) => prev + curr;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
//  15

find().找出数组中的第一个符合条件的元素,参数为一个回调,所有元素依次执行该回调参数,如果找到第一个返回值为true,那么就直接返回这个符合条件的元素,反之如果找不到符合条件的,那么返回值是undefined

var a1=[1, 4, -5, 10]
a1.find((n) => n < 0)   // -5
a1  //[1, 4, -5, 10]

var a1=[1, 4, -5, 10]
a1.find((n) => n == 0)   // undefined
a1  //[1, 4, -5, 10]

findIndex().数组实例的 findIndex 方法的用法与 find 方法非常类似。如果找到第一个符合条件的数组成员,则返回索引位置,如果所有成员都不符合条件,则返回-1

//没有符合元素
var a1=[1, 4, -5, 10]
a1.findIndex((n) => n == 0) //-1
a1  //[1, 4, -5, 10]

//有符合元素
var a1=[1, 4, -5, 10]
a1.findIndex((n) => n <0)  //2

includes().判断数组中是否包含给定的值

let a1=[1,2,3]
let a2=1
let a3=4
a1.includes(a2) //true
a1.includes(a3) //false
返回值是一个布尔值,如果包含返回 true,反之 false

entries(). keys(). values().用来遍历数组,返回的是一个遍历器对象,可以通过使用 for...of 进行遍历

for (let index of ['a', 'b'].keys()) {
  console.log(index);
}
// 0
// 1

for (let elem of ['a', 'b'].values()) {
  console.log(elem);
}
// 'a'
// 'b'

for (let [index, elem] of ['a', 'b'].entries()) {
  console.log(index, elem);
}

此三种方法遍历时有所区别:
keys是对键的遍历
values是对值的遍历
entries是对键和值一起的遍历

看了一些文章,小结了一下,欢迎指正文本错误