js数组方法(管饱)
有一些数组方法是ECMAScript新增的,一定要注意浏览器的兼容!!
Array对象属性:
属性 | 说明 |
constructor |
返回对创建此对象的函数引用 |
length | 返回集合内的元素的所有长度 |
prototype | 向对象添加属性和方法 |
constructor
const arr = [1, 2, 4, 5, 6, 9, 15]
console.log(arr.constructor) //输出为 ƒ Array() { [native code] }
length
const arr = [1, 2, 4]
console.log(arr.length) //输出为 3
下文的箭头函数的解释为:x => x*1 == function(x){return x*1}
如果是有多个参数则:(x,y) => x*y == function(x,y){return x*y} 。我这只是为了简写,并不代表适用。
Array对象方法:
方法 | 说明 |
shift() | 删除第一个元素,并返回结果。 |
unshift() | 插入元素至第一个元素前面,括号内放入要插入的元素。 |
splice() | 向数组内添加新元素。第一个参数定义添加新元素的位置,以拼接的方式,第二个参数是定义应删除多少个元素 |
slice() | 找出数组内的指定元素。第一个参数定义删除元素的位置,第二个参数是结束位置。 |
pop() | 删除数组内的最后一个元素,并返回结果。 |
push() | 在数组内的末尾添加一个或多个元素,并返回结果。 |
reverse() | 反转数组内的元素顺序,并返回结果。 |
toString() | 把数组转换为字符串并返回结果。注意:S为大写。 |
concat() | 合并(连接)数组创建一个新数组,也可以将括号内的值作为参数合并至当前数组。 |
sort() | 对数组内的元素进行排序。 (排序的依照我还搞不清楚....) |
valueOf() | 返回数组对象的原始值。 |
join() | 把数组内的元素拼成字符串,再以指定的分隔符进行分隔。 |
isArray() | 判断对象是否是一个数组。 |
includes() | 判断数组内是否包含指定的值,可添加多个。 |
lastIndexOf() | 返回指定的元素最后出现的位置。 |
find() | 返回数组内通过条件的第一个元素。注意:用函数判断、如果没有符合条件的元素则返回undefined。 |
indexOf() | 返回指定元素在数组内的位置。 |
copyWithin() | 指定元素位置拷贝到另一个位置。注意:后面的元素会被位移出数组,慎用! |
shift()
const myArray = [3, 1, 5, 2, 6]
console.log(myArray.shift()) //输出为 3
unshift()
const myArray = [3, 1, 5, 2, 6]
console.log(myArray.unshift(1,3,2323)) //输出为 [1, 3, 2323, 3, 1, 5, 2, 6]
splice()
const myArray = [3, 1, 5, 2, 6]
console.log(myArray.splice(1,1,'浮云共我归')) //输出为 [3, "浮云共我归", 5, 2, 6]
slice()
const arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr2.slice(2, 4)) //输出为 (2) [3, 4]
pop()
const arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr2.pop()) //输出为 9
push()
const arr2 = [1, 2, 3, 4]
console.log(arr2.push('233','333'))
console.log(arr2) //输出为 6 、 (6) [1, 2, 3, 4, "233", "333"]
toString()
const myArray = [3, 1, 5, 2, 6]
console.log(myArray.toString()) //输出为 3,1,5,2,6
concat()
const myArray = [3, 1, 5, 2, 6]
const MyArray = [66,77]
const result = myArray.concat(MyArray)
console.log(result.concat('add')) //输出为 [3, 1, 5, 2, 6, 66, 77, "add"]
sort()
const arr2 = [6, 2, '云', 1, 4, 'a']
const result = arr2.sort((x, y) => {
if (x > y) {
return 1
}
if (x < y) {
return -1
}
return 0
})
console.log(result) //输出为 (6) [1, 2, 4, 6, "a", "云"]
valueOf()
const arr2 = [6, 2, '云', 1]
console.log(arr2.valueOf()) // 输出为 (4) [6, 2, "云", 1]
join() (结合split()方法会有意想不到的结果,而且我发现)
const arr2 = ['浮','云','共','我','归']
console.log(arr2.join('')) // 输出为 浮云共我归
//用上这行arr2.join('').split('') 又变回原样了
//split()里不加值 输出: ["浮云共我归"]
isArray()
const myArray = [3, 1, 5, 2, 6]
console.log(Array.isArray(myArray)) //输出为 true
includes()
const arr2 = ['浮','云','共','我','归']
console.log(arr2.includes('云','浮')) // 输出为 true
lastIndexOf()
const arr2 = ['浮','云','共','我','归']
arr2.shift()
onsole.log(arr2.lastIndexOf('云')) // 输出为 0
find()
const myArray = [3, 1, 5, 2, 6]
const result = myArray.find(x => x > 5)
console.log(result) //输出为 6
indexOf()
const myArray = [3, 1, 5, 2, 6]
console.log(myArray.indexOf(6)) //输出为 4
copyWithin()
const myArray = [1, 2,'云', 3, 4, 5] const result = myArray.copyWithin(2,0)
console.log(result)
//输出为 (6) [1, 2, 1, 2, "云", 3]
Array对象-高阶函数
方法 | 说明 |
filter() 过滤 | 过滤未达成指定条件的元素,并返回结果。注意:不会对空元素进行检测,不会改变原数组 |
reduce() 累加 |
此方法接收一个函数作为累加器,数组中的每个元素从左到右相加,最终计算为一个值。可用于函数的compose。 注意:对空数组不会执行回调函数。 reduceRight()从右往左累加 |
map() 映射 | 返回一个新数组,数组中的元素为调用函数后处理的值。 |
filter()
// 过滤偶数
const arr = [1, 2, 4, 5, 6, 9, 15]
myarr = arr.filter((x) => x % 2 !== 0)
console.log(myarr)
reduce()
//将元素累加至最终全部相加的值,输出结果为42
const Nums = [1, 5, 1, 5, 10, 20]
const total = Nums.reduce((preValue, n) => {
return preValue + n
}, 0)
//后面0表示初始值,正数则在结果值上加,负数反之
map() (这个方法的用法也很多)
const myArray = [1, 2, 3, 4, 5]
console.log(myArray.map((function(x) {
return x + 1
}))) // 输出为 (5) [2, 3, 4, 5, 6]
数组遍历方法
方法 | 说明 |
forEach | 调用数组的每个元素,将元素传递给回调函数。 |
for in | 遍历出数组内的元素索引值。 keys()方法也和这个差不多 |
for of | 遍历出数组内的元素。 |
forEach
const myArray = [1, 2,'云', 3, 4, 5] //element是当前元素,index是元素索引,array是当前元素所属的数组对象
myArray.forEach(function(element, index,array) {
console.log(element,index,array)
}) /* 输出为:1 0 (6) [1, 2, "云", 3, 4, 5]
2 1 (6) [1, 2, "云", 3, 4, 5]
云 2 (6) [1, 2, "云", 3, 4, 5]
3 3 (6) [1, 2, "云", 3, 4, 5]
4 (6) [1, 2, "云", 3, 4, 5]
5 5 (6) [1, 2, "云", 3, 4, 5] */
for of
const myArray = [1, 2,'云', 3, 4, 5] for(result of myArray){
console.log(result)
}
//输出为 1 2 云 3 4 5
for in
const myArray = [1, 2,'云', 3, 4, 5] for(result in myArray){
console.log(result)
}
//输出为 0 1 2 3 4 5
数组的一些常用方法
去重
const myArray = [3, 1, 5, 1, 6]
const result = Array.from(new Set(myArray))
console.log(result) //输出为 [3,1,5,6]
字符串转数组 (数组转字符串可用toString()的方法)
const myArray = '浮云共我归'
const result = Array.from(myArray)
console.log(result) //输出为 ["浮,云,共,我,归"] //如果去掉from 输出为 ["浮云共我归"]
将首字母变为大写,其余小写
const arr = ['adam', 'LISA', 'barT']
const arr2= ['Adam', 'Lisa', 'Bart'] function result(arr) {
return arr.map(function(x) {
x = x.toLowerCase()
//toUpperCase()将元素转化为大写,substring()提取指定下标里的元素后面的字符
x = x[0].toUpperCase() + x.substring(1)
return x
})
}
console.log(result(arr).toString() === arr2.toString()) //输出为 true 转换小写的方法是 toLowperCase()
用map创建键值对集合 && 元素乘与自身
const arr1 = new Map([
['lai', 199],
['quan', 'map'],
['feng', 10]
])
console.log(arr1)
//输出为 Map(3) {"lai" => 199, "quan" => "map", "feng" => 10} const arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
const result = arr2.map(x => x * x)
console.log(result)
//输出为 (9) [1, 4, 9, 16, 25, 36, 49, 64, 81]
找出数组内最大的数字
const myArray = [1, 2, 3, 4, 5] const result = Math.max(...myArray)
console.log(result)
//输出为 5
//最小值的话换成min即可
去除数组内的空格 缺点是数组内不能包含数字
const myArray = ['a', ' ', null, '', undefined, 'b', 'c',' ']
const result = myArray.filter((z) => z && z.trim())
console.log(result) //输出为 (3) ["a", "b", "c"]
js数组方法(管饱)的更多相关文章
- js 数组方法比较
js 数组方法比较 table th:first-of-type { width: 80px; } table th:nth-of-type(2) { width: 120px; } table th ...
- js数组方法详解
Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...
- 转载收藏(js数组方法大全)
js数组方法大全 JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组var arr2 = new Arra ...
- js数组方法大全(上)
# js数组方法大全(上) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 join() reverse() sort() concat() slice( ...
- js数组方法大全(下)
# js数组方法大全(下) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 forEach() map() filer() every() some() ...
- JS数组方法汇总 array数组元素的添加和删除
js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[ ...
- 几个关于js数组方法reduce的经典片段
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
- js数组方法详解(最新最全)
数组是js中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响.本文所有的栗子都是在es7环境下测试的,如果有问题欢迎留言交流 ...
- js数组方法解析
js 数组有很多方法,其中有的常用,有的不常用,归纳几个常用的方法,做个总结: 1. 转换方法: 1.1 valueOf():调用这个方法会返回数组本身 <script> var arr ...
随机推荐
- python进程开启的两种方式
一.进程 1.1.方式一 from multiprocessing import Process import time #方式一 def task(name): print(f"my na ...
- TMS, XYZ & WMTS的不同
WMS是OGC定义的协议,用于请求任意区域的渲染地图图像.客户可以根据需要以平铺模式对其进行请求. WMS-C是OSGeo创建的WMS扩展,它向功能文档中添加了元数据,以使客户端知道在哪里发出请求,从 ...
- 编程体系结构(08):Spring.Mvc.Boot框架
本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架概述 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...
- linux(centos8):安装java jdk 14 (java 14.0.2)
一,下载jdk14 官方网站: https://www.oracle.com/java/ 下载页面: https://www.oracle.com/cn/java/technologies/javas ...
- STM32芯片型号的命名规则
意法半导体已经推出STM32基本型系列.增强型系列.USB基本型系列.增强型系列:新系列产品沿用增强型系列的72MHz处理频率.内存包括64KB到256KB闪存和20KB到64KB嵌入式SRAM.新系 ...
- 第七章 TCP和UDP原理
一.引入 1.TCP/IP协议族的传输层协议主要包括TCP和UDP 2.TCP是面向连接的可靠的传输层协议.它支持在并不可靠的网络上实现面向连接的可靠的数据传输 3.UDP是无连接的传输协议,主要用于 ...
- 第十四章 Linux三剑客之老大—awk
一.awk # 擅长取列 计算 数组 函数 编程语言 内部命令 内部变量 NR #行号 $0 #完整的一行内容 $n # n 是数字 表示取出第几列 多列用逗号分割 -F #FS 分隔符的变量 NF ...
- oozie.action.hadoop.LauncherException: IO error Connection timed out: no further information
本文主要针对使用CDH平台的HUE时候碰到两类问题,最终问题并没有得到很好的解决,只是提供了一种绕行方式,欢迎知道的朋友补充. ## **NO 1: HUE执行jar包** > 第一种报错 or ...
- MySQL数据库基础-1
数据库原理 数据时代 信息创造价值 -结构化数据 关系完整,密切 -非结构化数据 数据散乱,相互关系不大 -半结构化数据 XML HTML 也不是完全没有结构,也不是特别规矩 MySQL适合管理结构化 ...
- Anderson《空气动力学基础》5th读书笔记 第0记——白金汉PI定理
目录 量纲分析:白金汉PI定理 相似参数 量纲分析:白金汉PI定理 在空气动力学中,飞机的空气动力主要由自由来流的密度ρ∞,自由来流数V∞,翼弦长度c,自由来流的粘性系数μ∞以及音速a∞,所以假设我们 ...