js数组方法

一. 添加/移除数组元素

1.简单方法

push 方法     —— 从数组尾端添加元素
 let arr = [1,2,3]
 arr.push(...[4,5])
 console.log(arr)  // [1,2,3,4,5]
pop 方法      —— 删除数组最后一个元素
 let arr = [1,2,3]
 arr.pop()
 console.log(arr)  // [1,2]
shift 方法    —— 删除数组首个元素
 let arr = [1,2,3]
 arr.shift()
 console.log(arr)  // [2,3]
unshift 方法  —— 从数组首端添加元素
 let arr = [1,2,3]
 arr.unshift(0)
 console.log(arr)  // [0,1,2,3]
slice 方法    —— 截取数组
 let arr = [1,2,3]
 let newArr = arr.slice(0,2)
 console.log(newArr)  // [1,2]
concat 方法   —— 创建一个新数组,其中包含来自于原数组、其他数组和其他项的值
 let arr = [1,2,3]
 let newArr = arr.concat([3, 4], 5, 6)
 console.log(newArr)   // [1,2,3,4,5,6]

2.复杂方法

splice 方法   —— 全面方法,可以添加,删除和插入元素

语法是:从索引 start 开始修改 arr,删除 deleteCount 个元素并在当前位置插入 elem1, ..., elemN。最后返回已处理完的数组

 arr.splice(start, deleteCount, elem1, ..., elemN)

删除

let arr = [1, 2, 3]
arr.splice(1, 1) // 从索引 1 开始删除 1 个元素
console.log( arr ) // [1, 2]

替换

let arr = [1, 2, 3]
arr.splice(0, 2, -1, -2) // 从索引 0 开始删除 2 个元素,插入的-1和-2其中-1成为新的索引0
console.log( arr ) // [-1, -2, 3]

截取

let arr = [1, 2, 3]
let newArr = arr.splice(0, 2) // 从索引 0 开始删除 2 个元素,但是删除的元素被newArr截取
console.log( newArr ) // [1, 2]

插入

let arr = [1, 2, 5]
arr.splice(2, 0, 3, 4) // 从索引 2 开始删除 0 个元素,插入的3和4其中3成为新的索引2
console.log( arr ) // [1, 2, 3, 4, 5]

负索引

let arr = [1, 2, 5]
rr.splice(-1, 0, 3, 4) // 从索引 -1(倒数第二位) 开始删除 0 个元素,插入3和4
console.log( newArr ) // [1, 2, 3, 4, 5]

二. 遍历数组元素

forEach 方法  —— 为数组的每个元素都运行一个函数
 let arr = ['a','b','c']
 arr.forEach((item, index, array) => {
  console.log(`对象是${item},索引是${index},原数组是${array}`);
});

// 对象是a,索引是0,原数组是a,b,c
   .
   .
for 方法  —— 为数组的每个元素都运行一个函数
 let arr = ['a','b','c']
 for (let item of arr) {
   console.log( `对象是${item}` );
 }
 // 对象是a
   .
   .

三. 在数组中搜索

1.简单数组搜索方法

indexOf /lastIndexOf / includes 方法  —— 数组中进行搜索

语法是 a.从from索引开始搜索item,找到返回索引,找不到返回-1(从左往右)

    b.从from索引开始搜索item,找到返回索引,找不到返回-1(从右往左)

    c.从from索引开始搜索item,找到返回true,找不到返回false

a.arr.indexOf(item, from) 
b.arr.lastIndexOf(item, from)
c.arr.includes(item, from)
let arr = ['a','b','c','d','a'];
let newArr1 = arr.indexOf('a')      // 0
let newArr2 = arr.lastIndexOf('a')  // 4
let newArr3 = arr.includes('a')     // true

也可以在字符串中搜索

let arr = 'abcda;
let newArr1 = arr.indexOf('a')      // 0
let newArr2 = arr.lastIndexOf('a')  // 4
let newArr3 = arr.includes('a')     // true

2.对象数组搜索方法

find 方法

一旦返回true,则停止搜索,返回item,故只能返回一个item,即第一个匹配的item。如果没有搜索到,则返回undefined

let arr =[
  {id: 1, name: "张三"},
  {id: 2, name: "李四"},
  {id: 3, name: "王五"}
];
let user = arr.find((item, index, array)=> {
  return item.id == 1
});
console.log(user.name) // 张三
filter 方法

一旦返回true,不会停止搜索,会返回所有匹配值组成的数组,即第一个匹配的item。如果没有搜索到,则返回undefined

let arr =[
  {id: 1, name: "张三"},
  {id: 2, name: "李四"},
  {id: 3, name: "王五"}
];
let user = arr.find((item, index, array)=> {
  return item.id < 3
});
console.log(user)
// [
    {id: 1, name: "张三"},
    {id: 2, name: "李四"}
   ]

四. 转换数组

map 方法  —— 它对数组的每个元素都调用函数,并返回结果新数组,但不会改变原数组
let arr = ['name','sex','class']
let newArr = arr.map((item, index, array) => {
  return item.length
});
console.log(newArr) // [4,3,5]
sort 方法  —— 对数组进行排序

按照数字排序

let arr = [1,15,2]
arr.sort((a, b) => a - b)
console.log(arr) // [1,2,15]

按照字母排序

let arr = ['Österreich','Andorra','Vietnam']
arr.sort((a, b) => a.localeCompare(b));
console.log(arr) // ['Andorra','Österreich','Vietnam']
reverse 方法  —— 颠倒数组
let arr = [1, 2, 3]
arr.reverse()
console.log(arr) // [3,2,1]
split / join 方法  —— 数组 / 字符串互转

说简单一点就是字符串转数组 / 数组转字符串

let name = '张三, 李四, 王五'
let arr = name.split(', ')
console.log(arr) // ['张三', '李四', '王五']
let arr = ['张三', '李四', '王五']
let name = arr.join(', ')
console.log(name) // '张三, 李四, 王五'
reduce / reduceRight 方法  —— 数组相加

reduce语法:a第一次等于0,然后依次循环item相加(从左往右)

reduceRight语法:a第一次等于0,然后依次循环item相加(从右往左)

let arr = [1, 2, 3, 4, 5];
let newArr = arr.reduce((a, b) => a + b, 0);
console.log(newArr); // 15
Array.isArray 方法  —— 判断数据类型是不是数组
let arr = [];
let obj = {}
console.log(Array.isArray(arr)) // true
console.log(Array.isArray(obj)) // false

五. 数组方法备忘单

现代js教程-数组方法

image

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组的排序 sort()方法排序问题。 sort()方法是Array原型链上自带的方法。 默认排序顺序是根据字符串...
    无迹落花阅读 3,674评论 1 0
  • 数组的创建方式1.字面量的形式:var arr=[1,2,3];1.构造函数:var arr1=new Array...
    飘曳_87de阅读 1,618评论 0 0
  • concat():用于连接两个或多个数组。不会更改现有数组,而是返回一个新数组 let arr1 = ['Java...
    huangxiaohui90阅读 1,599评论 0 0
  • 位置方法: indexOf(查找值)//默认从索引0开始查找 indexOf(查找值,从哪里开始找(索引)) la...
    EO_eaf6阅读 1,228评论 0 0
  • 数组方法 改变原数组 push() :将参数添加到数组尾部返回添加后的数组的长度 pop() : 将参数从数组尾部...
    熬得萨菲阅读 5,950评论 0 0