JS中的数组方法
JS中的数组方法总结
Array.push()
向数组的末尾添加一个或者多个元素,并返回新的长度 let arr =[1,2,3]; console.log(arr.push(6)) //打印结果为 4 console.log(arr) // 打印结果为 [1,2,3,6]
Array.pop()
删除数组的最后一个元素,并返回被删除的元素 let arr = [1,2,3]; console.log(arr.pop()); //打印结果 3 console.log(arr) // 打印结果 [1,2]
Array.unshift()
向数组的开头添加一个或多个元素,并返回新长度 let arr = [1,2,3]; console.log(arr.unshift(6)) //打印结果 4 console.log(arr) // 打印结果 [6,1,2,3]
Array.shift()
删除并返回数组的第一个元素 let arr = [1,2,3] console.log(arr.shift()) //打印结果 1 console.log(arr) //打印结果 [2,3]
Array.splice(a,b,c)
从下标为a的地方开始移除,移除b个,并把c放在被移除的位置,返回移除元素 let arr = [1,2,3] console.log(arr.splice(1,2,a)) //打印结果 [2,3] console.log(arr) //打印结果 [1,a]
Array.slice(a,b)
将数组中的一部分选取出来并返回成新数组,不改变原数组,不包括结束位置。该方法还可以操作字符串和substring()功能一样 let arr = [1,2,3,4] console.log(arr.slice(1,3)) //打印结果 [2,3] console.log(arr) //打印结果 [1,2,3,4]
Array.concat(arr1,arr2)
连接2个或者更多的数组,并返回连接后的新数组,该方法不会改变原数组 let arr1 = [1,2,3], arr2 = [4,5,6] let arr = arr1.concat(arr2) console.log(arr) // 打印结果 [1,2,3,4,5,6]
Array.join(分隔符)
将数组里的所有元素用分隔符连接成一个字符串,并返回该字符串,如不写参数则已逗号为分隔符 let arr = [1,2,3,4] console.log(arr.join()) //打印结果 “1,2,3,4” console.log(arr.join("+")) //打印结果 “1+2+3+4” console.log(arr) // 结果 [1,2,3,4]
Array.toString()
将数组用逗号连接作为字符串返回,和join()作用一样但是不能传参 let arr = [1,2,3] console.log(arr.toString()) //结果 “1,2,3”
Array.forEach(fn,[thisValue])
thisValue为fn中this的指向,对数组进行循坏遍历,fn可传三个参数fn(item,[index],[arr]),item为遍历过程中的当前元素,index为当前元素的下标,arr为原数组对象 let myArr = [1,2,3] myArr.forEach((item,index,arr)=>{ console.log(item,index,arr) }) /* 结果为 : 1,0,[1,2,3] 2,1,[1,2,3] 3,2,[1,2,3] */ myArr.fotEach(function(item,index,arr){ console.log(this) //结果为三个 {name:‘张三’} },{name:‘张三’})
注:箭头函数中无法改变this指向,因此如果想用thisValue参数必须使用function函数
Array.map()
对数组中的每个元素进行重新编辑,返回用编辑结果组成的新数组,传递的参数和forEach()一样 let arr = [1,2,3] let a = arr.map((item)=>{ return item+5 }) console.log(a) // 结果 [6,7,8]
Array.filter()
可以对数组进行过滤,返回过滤结果组成的数组,传递的参数和forEach()一样 let arr = [1,2,3] let a = arr.filter(item=>{ return item>2 }) console.log(a) //结果 [3]
Array.every()
用于检测数组中的每个元素是否符合某一条件,若全部符合返回true,否则返回false,传递的参数和forEach()一样 let arr = [1,2,3] let a = arr.every(item=>{ return item>2 }) console.log(a) //结果 false 1,2不大于2 let b = arr.every(item=>{ return item<4 }) console.log(b) //结果 true 都小于4
Array.some()
用于检测数组中是否有元素符合某一条件,若有返回true,否则返回false,传递的参数和forEach()一样 let arr = [1,2,3] let a = arr.some(item=>{ return item>2 }) console.log(a) //结果 true 3大于2 let b = arr.some(item=>{ return item>4 }) console.log(b) //结果 false 没有元素大于4
Array.reduce()
通过计算将数组计算为1个值,只执行arr.length-1次 arr.reduce(function(a,b,c,d)), 参数: a——初始值为数组第一个值,之后会赋值为每次循环的返回值 b——初始值为数组第二个值,之后为第三个,直到最后一个 c——b的下标 d——原数组 let arr = [1,2,3] console.log(arr.reduce(function(a,b,c,d){ return a+b })) //结果 6
Array.reduceRight()
将数组元素计算为一个值,和reduce()一样,只是循环方向相反从最后一个元素开始
Array.sort()
不传参默认按照UniCode码排序,也可以传参指定排序方法,arr.sort(fn(second,fitst)),该方法会改变原数组 let arr = [2,1,3] console.log(arr.sort((a,b)=>{ return a-b }))
//升序排列
console.log(arr.sort((a,b)=>{ return b-a }))
//降序排列
let arr1 = [ {name:‘张三’,age:19}, {name:‘李四’,age:17}, {name:‘王五’,age:20} ] console.log(arr1.sort((a,b)=>{ return a.age-b.age }))
/*结果为 [ {name:‘李四’,age:17}, {name:‘张三’,age:19}, {name:‘王五’,age:20} ] */
Array.reverse()
颠倒数组中的顺序,会改变原数组 let arr = [1,2,3] arr.reverse() console.log(arr) //结果 [3,2,1]
Array.find()
返回数组中符合条件的第一个元素,若数组中没有元素符合要求则返回undefined,不改变原数组 let arr = [1,2,3] console.log(arr.find((item)=>{ return item>1 })) //结果 2
Array.findIndex()
返回数组中符合条件的第一个元素的下标,若数组中没有元素符合要求则返回-1,不改变原数组 let arr = [1,2,3] console.log(arr.findIndex((item)=>{ return item>1 })) //结果 1
Array.includes()
判断数组是否含有某一个元素,有则返回true,没有则返回false,参数:第一个参数为查询的元素,第二个参数为查询的下标(可不填,负数为倒着数) [1,2,3].includes(2) // true [1,2,3].includes(0) // false [1,2,3].includes(2,1) // true [1,2,3].includes(2,2) // false
Array.indexOf()
查询某一元素的下标,若数组中没有该元素则返回-1,参数:第一个参数为查询元素,第二个参数为开始查询位置(选填) let arr = [1,2,3,4] console.log(arr.indexOf(2)) // 1 console.log(arr.indexOf(2,2)) // -1
Array.lastIndexOf()
查询某一元素的最大下标,若数组中没有该元素返回-1,参数:第一个参数为查询元素,第二个参数为查询结束位置的下标(选填) let arr = [1,2,3,4,2] console.log(arr.lastIndexOf(2)) // 4 console.log(arr.lastIndexOf(2,2)) // 1
Array.isArray()
判断对象是否为数组,是返回true,不是返回false let arr = [1],str=“1” Array.isArray(arr) //true Array.isArray(str) //false
Array.valueOf()
返回数组对象的原始值 let arr = [1,2,3] console.log(arr.valueOf()) //[1,2,3]
Array.entries()、Array.keys()、Array.values()
这三个方法都用于遍历数组,它们都返回一个遍历器对象,entries是对键值对遍历,values是对键值遍历,keys是对键名遍历 let arr = [“a”, “b”, “c”] let item = arr.entries() console.log(item.next().value) // [0, “a”] console.log(item.next().value) // [1, “b”] console.log(item.next().value) // [2, “c”] console.log(item.next().value) // undefined
let ikey = arr.keys() console.log(ikey.next().value) // 0 console.log(ikey.next().value) // 1 console.log(ikey.next().value) // 2 console.log(ikey.next().value) // undefined
let ivalue = arr.values() console.log(ivalue.next().value) // a console.log(ivalue.next().value) // b console.log(ivalue.next().value) // c console.log(ivalue.next().value) // undefined
Array.flat(num)
用于多维数组变成一维数组并返回,对原数组没有影响。num为转换的层数,若不确定可以写Infinity,会跳过空位 [1,2,[1,2]].flat() //[1,2,1,2] [1,2,[1,[1,2]]].flat(2) //[1,2,1,1,2] [1,[2,[3,4]]].flat(Infinity)//[1,2,3,4]
Array.flatMap()
相当于先对一个数组执行map方法,然后对返回结果再执行flat方法返回新数组,不改变原数组 [1,2,3].flatMap((item)=>{ return [item,item*item] }) //[1,1,2,4,3,9]
Array.fill()
将数组的内的元素用某一固定值代替,参数:第一个为代替值,第二个为开始下标,第二个为结束下标 let arr = [1,2,3] arr.fill(‘a’) console.log(arr) //[‘a’,‘a’,‘a’] arr.fill(1,1,2) console.log(arr) //[‘a’,1,1]
Array.copyWithin()
从数组的指定位置复制到数组的另一个位置,参数:第一个为复制到指定位置的下标,第二个为复制的开始位置,第三个为复制的结束位置(不包括该位置)。 let arr = [1,2,3,4] arr.copyWithin(2,0,2) console.log(arr) //[1,2,1,2]
Array.of()
用于构造数组 let arr = Array.of(1,2,3) console.log(arr) //[1,2,3]
Array.from()
使用方法如下 console.log(Array.from([1,2,3])) //[1,2,3] console.log(Array.from(“abcdef”)) //[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]
- SpringMVC学习第一天
- 最近的几个技术问题总结和答疑 (r8笔记第19天)
- Hibernate_day04总结
- Hibernate_day03总结
- 服务器进程异常的原因分析(第二篇)(r8笔记第16天)
- 最近处理的几个小问题_20160311 (r8笔记第35天)
- Hibernate_day02总结
- Hibernate_day01总结
- ADG备库批量查询失败的原因分析(r8笔记第33天)
- 通过外部表改进一个繁琐的大查询 (r8笔记第32天)
- 一个简单的bigfile tablespace无法扩展的案例处理 (r8笔记第31天)
- 测试环境的迁移式升级和数据整合(r8笔记第27天)
- 增量数据丢失的原因分析(r8笔记第26天)
- Java全栈开发Spring学习第三天
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AWS CodeArtifact 如何设置用户的 TOKEN
- GORM V2 自动迁移和迁移接口的方法
- Vue Nginx反向代理配置 解决生产环境跨域
- react的事件处理为什么要bind this 改变this的指向?
- 没有用到React,为什么我需要import引入React?
- JSON对象和JavaScript对象直接量的区别--不同之处
- (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
- 关于DOM的理解
- 关于闭包函数和递归函数的详细理解
- 新手怎么学JS?JavaScript基础入门
- 纯CSS制作加<div>制作动画版哆啦A梦
- Ubuntu 18.04 安装使用 Supervisor 进程守护并设置开机自动启动
- AWS CLI version 2 在 Windows 下的安装
- Vue事件绑定原理
- 组合