Array常用函数

48 阅读5分钟

[TOC]

常用函数

Array 对象

函数说明
length数组长度
split()字符串转数组
join()将数组的所有元素连接成一个字符串
slice()截取数组,并返回新数组
splice()从数组中添加/删除元素
filter()过滤,并返回新数组
map()循环处理,返回新数组
forEach()循环处理,改变原数组
sort()对数组的元素进行排序
reverse()反转数组
includes()是否包含指定的元素
indexOf()返回元素下标
lastIndexOf()从末尾开始,返回元素下标
push()末尾添加,并返回新的长度
unshift()开头添加,并返回新的长度
pop()删除最后一个元素,并返回该元素
shift()删除第一个元素,并返回该元素
isArray()是否为数组
valueOf()返回所引用的数组
keys()返回下标数组
concat()连接两个或多个数组,不会改变原数组
some()至少有一个符合条件就返回 true
every()每个都符合条件就返回 true
fill(str)以 str 替换整个数组的元素
reduce()将数组的值减为单个值(从左到右)
reduceRight()将数组的值减为单个值(从右到左)
find()返回数组中第一个通过测试的元素的值
findIndex()返回数组中通过测试的第一个元素的索引

push()、unshift()、pop()、shift()、concat()

  • 增、删、改、查、拼接
let arr = [1,2,3]
arr.push(4)
// [1,2,3,4]

let arr = [1,2,3]
arr.unshift(4)
// [ 4,1,2,3 ]

let arr = [1,2,3]
let a = arr.pop()
// a : 3
// arr : [ 1,2 ]

let arr = [1,2,3]
let a = arr.shift()
// a : 1
// arr : [ 2,3 ]

let arr1 = [1,2,3]
let arr2 = [4,5,6]
let arr3 = [7,8,9]
let arr4 = arr1.concat(arr2,arr3)
// arr4 : [1,2,3,4,5,6,7,8,9]

length

  • 数组长度
let arr = [1,2,3,4,5,6,7,8,9]
console.log(arr.length);
// 9

split()

  • 字符串转数组
let str = "Banana,Orange,Lemon,Apple,Mango"
let arr = str.split(",") 
// [ Banana,Orange,Lemon,Apple,Mango ]

splice()

  • 添加
  • 删除,并返回删除项
  • 方法会改变原始数组
// 原始数组
let fruits = ["Banana", "Orange", "Apple", "Mango"];

// 处理方式 1
// 从下标 2 开始,删除 1 个元素,并从下标 2 开始插入 2 个元素
fruits.splice(2, 1, "Lemon", "Kiwi");
// ['Banana', 'Orange', 'Lemon', 'Kiwi', 'Mango']

// 处理方式 2
// 从下标 2 开始插入 2 个元素
fruits.splice(2, 0, "Lemon", "Kiwi");
// ['Banana', 'Orange', 'Lemon', 'Kiwi', "Apple", 'Mango']

// 处理方式 3
// 从下标 2 开始,删除 2 个元素
fruits.splice(2, 2);
// ['Banana', 'Orange']

// 处理方式 4 
// 删除下标 2 的元素,并插入 2 个元素
fruits.splice(2, 2);
// ['Banana', 'Orange', 'Lemon', 'Kiwi', 'Mango']

slice()

  • 以新数组方式,返回被选中的元素
  • [ 包含开始位置 , 不包含结束位置 )
  • 不会改变原始数组
array.slice( start, end )
// [ 包含 start 位置 , 不包含 end 位置 )


// 原始数组
let fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];

// 处理方式 1 
let newArr = fruits.slice(1, 3);
// [ "Orange", "Lemon" ]

// 处理方式 2 
let newArr = fruits.slice(1);
// [ "Orange", "Lemon", "Apple", "Mango" ]

// 处理方式 3 
let newArr = fruits.slice(-3,-1);
// [ "Orange", "Lemon", "Apple", "Mango" ]

filter()

  • 过滤,并返回新数组
let arr = [1,2,3,4,5,6,7,8,9]
let filterArr = arr.filter(i=>i>5) 
// [ 6,7,8,9 ]

map()

  • 过滤,并返回新数组
let arr = [1,2,3]
let mapArr = arr.map(i=>i*2) 
// [ 2, 4, 6 ]

forEach()

  • 过滤,并返回新数组
let arr = [1,2,3]
arr.map(i=>i*2) 
// [ 2, 4, 6 ]

sort()

  • 排序
let points = [40, 100, 1, 5, 25, 10];

// 默认排序
// 使用字母顺序排序
points.sort( (a, b) => a - b );
// [ 1,10,100,25,40,5 ]

// 升序
points.sort( (a, b) => a - b );
// [ 1,5,10,25,40,100 ]

// 降序
points.sort( (a, b) => b - a );
// [ 100,40,25,10,5,1 ]

reverse()

  • 反转数组
let arr = [1,2,3]
arr.reverse()
// [ 3, 2, 1 ]

includes()

  • 是否包含指定的元素
let arr = [1,2,3]
let flog = arr.includes(2) 
// true

indexOf()、lastIndexOf()、findIndex()

  • indexOf : 返回元素下标
  • lastIndexOf :从末尾开始,返回元素下标
  • findIndex :返回数组中通过测试的第一个元素的索引
// 返回元素下标
let arr = [1,2,3,4,5,6,7,8,9]
let index = arr.indexOf(5) 
// 4

// 从末尾开始,返回元素下标
let arr = [1,2,2,5,5,6]
let index = arr.lastIndexOf(2) 
// 2

// 返回数组中通过测试的第一个元素的索引
let arr = [1,2,2,5,5,6]
let index = arr.findIndex(5) 
// 3

join()、split()

  • join : 数组转字符串
  • split : 字符串转数组
let arr = [1,2,3,4,5,6,7,8,9]
let str = arr.join()
// "1,2,3,4,5,6,7,8,9"

let str = "Mango,Apple,Orange,Banana"
let arr = str.split(",")
// [ "Banana", "Orange", "Apple", "Mango" ]

some()、every()

  • some : 至少有一个符合条件就返回 true
  • every : 每个都符合条件就返回 true
// 至少有一个符合条件就返回 true
let arr = [1,2,3,4,5,6,7,8,9]
let flag = arr.some( i => i>5)
// true

// 每个都符合条件就返回 true
let arr = [1,2,3,4,5,6,7,8,9]
let flag = arr.every( i => i>5)
// false

reduce()、reduceRight()

  • reduce : 将数组的值减为单个值(从左到右)
  • reduceRight : 将数组的值减为单个值(从右到左)
// 将数组的值减为单个值(从左到右)
let arr = [175, 50, 25]
let reduceArr = arr.reduce((total, num) => total - num)
// 100

// 将数组的值减为单个值(从右到左)
let arr = [175, 50, 25]
let reduceArr2 = arr.reduceRight((total, num) => total - num)
// -200

isArray()、fill(str)、valueOf()

  • isArray : 是否为数组
  • fill(str,start,end) : 以 str 替换数组的元素,[ 包含 start 下标, 不包含 end 下标 )
  • valueOf : 返回所引用的数组
let arr = [1,2,3,4,5,6,7,8,9]
let flag = Array.isArray(arr)
// true

let arr1 = [1,2,3,4,5]
let arr2 = arr.fill("str")
// [ "str", "str", "str", "str", "str" ]
let arr3 = arr.fill("str",2)
// [ 1,2, "str", "str", "str" ]
// [ 包含 start 下标, 不包含 end 下标 )
let arr3 = arr.fill("str",2,3)
// [ 1,2,"str",4,5 ]

let arr = [1,2,3,4,5,6,7,8,9]
let a = arr
a = a.push(10)
let b = a
let c = b.valueOf()
console.log(c)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

join()、split()

  • join : 数组转字符串
  • split : 字符串转数组
let arr = [1,2,3,4,5,6,7,8,9]
let str = arr.join()
// "1,2,3,4,5,6,7,8,9"

let str = "Mango,Apple,Orange,Banana"
let arr = str.split(",")
// [ "Banana", "Orange", "Apple", "Mango" ]