大家有没有想过,js数组为什么会有这么多的方法,没错,就是为了不同场景下处理数据的需要,就像设计模式一样,都是为了能更好的处理当前场景的需要。
首先怎么创建一个数组呢,
// 两种方式
// 1,构造函数模式 (Array,是浏览器引擎自动创建的构造函数,js 所有直接可用的东西都是浏览器默认创建的,各个浏览器厂商根据ECMAScript的标准去默认支持)
let arr = new Array()
// 2,字面量表示法
let arr2 = []
console.log(arr,'arr')
console.log(arr2,'arr2')

1,基本方法 判断数组 数组的增删改查 转换成字符串 合并数组
1.1 判断是否是一个数组 isArray
// Array.isArray()  返回 boolean 值
let arr = [1,2]
let isArr = Array.isArray(arr)
console.log(isArr)
// true
// 可以看到,arr是一个数组,如果不是,返回false
1.2 向数组里添加数据 push unshift
// 从数组后面添加数据 push
let arr = [1,2]
arr.push(3) //可以push 一个或多个如 arr.push(3,4)
console.log(arr) // [1,2,3]
// 从数据前面添加数据 unshift
let arr2 = [1,2]
arr2.unshift(0);
console.log(arr2); //[0,1,2]
1.3 从数组里删除数据 pop shift
// 删除数组最后一位数据 pop
let arr = [1,2,3]
arr.pop()
console.log(arr) // [1,2]
// 删除数组第一位数据 shift
let arr2 = [1,2,3]
arr2.shift()
console.log(arr2) // [2,3]
1.4 改变数组数据 splice
// splice(index,num,data) // index => 数组下标 num => 删除的数量 data => 插入的数据
let arr = [1,2,3]
//示例 替换数组第二个元素数字2为数字4
arr.splice(1,1,4)
console.log(arr) // [1,4,3]
1.5 查找数组中的数据 indexOf lastIndexOf includes
//indexOf(data,index) lastIndexOf(data,index); data=> 要查找的数据,index(可选项) 从那个下标开始查
//indexOf()从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找,返回找到的下标 没有找到返回 -1
// includes,意思包含包括,判断是否包含,返回boolean值
let arr = [1,2,3]
let index = arr.indexOf(1)
let index2= arr.indexOf(7)
console.log(index) // 0
console.log(index2) // -1 let arr2 = [1,2,3,4]
let index3 = arr.lastIndexOf(3)
let index4 = arr.lastIndexOf(8)
console.log(index3) // 2
console.log(index4) // -1 let arr3 = [1,2,3,4]
let index5 = arr.includes(3)
console.log(index5) // true
1.6 数组转换成字符串 join(str)
// join(str)  // 默认以逗号 , 连接,可以指定连接符
let arr = [1,2,3]
let str = arr.join('-')
console.log(str) // 1-2-3
1.7 数组合并(扩展)concat
// join  // 默认以逗号 , 连接,可以指定连接符
let arr = [1,2,3]
let arr2 = [4,5,6]
let arr3 = arr.concat(arr2)
console.log(arr)
console.log(arr2)
console.log(arr3)
// [1, 2, 3]
// [4, 5, 6]
// [1, 2, 3, 4, 5, 6]
// 可以看到原数组都没变,concat之后返回一个新数组 // es6 数组的扩展 (... 扩展运算符)
let arr4 = [1,2,3]
arr5 = [...arr4,4,5,6]
console.log(arr4)
console.log(arr5)
// [1, 2, 3]
// [1, 2, 3, 4, 5, 6]
2.数组的迭代方法 什么是迭代,对于js数组来说,就是通过遍历原数组执行callback的过程
2.1 Array.every(callback) 遍历数组 执行callback函数的条件 返回 Boolean 值
let arr = [1,2,3,5,6]
let data = arr.every((item,index)=> {
console.log(item,index)
return item < 3
})
console.log(data,'data')
// 1,0
// 2,1
// 3,2
// false data
// 可以看到,当循环到第一个不符合条件时,终止遍历,同时返回 boolean
2.2 Array.some(callback) 遍历数组 执行callback函数的条件 返回 Boolean 值
let arr = [1,2,3,5,6]
let data = arr.some((item,index)=> {
console.log(item,index)
return item < 3
})
console.log(data,'data')
// 1,0
// true data
// 当有一个符合,终止遍历,同时返回 boolean
2.3 Array.filter(callback) 遍历数组 执行callback函数的条件 返回 符合条件的新数组
let arr = [1,2,3,5,6]
let data = arr.filter((item,index)=> {
console.log(item,index)
return item < 3
})
console.log(data,'data') // [1,2]
// filter 过滤,每一项都参与了循环
2.4 Array.map(callback) 遍历数组 执行callback函数的条件 全部执行后返回新的数组
let arr = [1,2,3,5,6]
let data = arr.map((item,index)=> {
console.log(item,index)
return item*2
})
console.log(data,'data') //  [2, 4, 6, 10, 12]
// map 映射,每一项都参与了循环,通过callback函数后 返回新的数组
2.5 Array.reduce(callback(previousValue,currentValue,index,array))
//callback (执行数组中每个值的函数,包含四个参数)
// 1、previousValue 上一次调用回调返回的值,或者是提供的初始值(initialValue)
// 2、currentValue 数组中当前被处理的元素
// 3、index 当前元素在数组中的索引)
// 4、array 调用 reduce 的数组
// 注:如果是第一次调用 callback,previousValue 为第一个元素的值,currentValue 是第二个元素的值
let arr = [1,2,3,5,6]
let data = arr.reduce((previousValue,currentValue,index)=> {
console.log(previousValue,currentValue,index)
return previousValue + currentValue
})
console.log(data,'data') //  [2, 4, 6, 10, 12]
// 1 2 1
// 3 3 2
// 6 5 3
// 11 6 4
// 17 'data'
// 可以看出来,第一次执行callback的时候,是执行数组的第二个元素,其中 previousValue 为第一个元素的值,currentValue 是第二个元素的值
// 注:不管 reduce 作为累加累乘还是取最大值,其都是 拿callback的值和下一个元素再去执行callback,大家记住这一点就可以
2.6 Array.forEach(callback) 遍历数组 执行callback 不返回新值,只是遍历操作
let arr = [1,2,3,5,6]
let arr2 = []
arr.forEach((item,index)=> {
console.log(item,index)
arr2.push(item*2)
})
console.log(arr2,'data') //  [2, 4, 6, 10, 12]
// forEach 遍历循环,每一项都参与了循环,执行callback函数
2.7 Array.find(callback) 遍历数组 找到符合callback的项,中断循环并返回,没有找到返回 underfined
let arr = [1,2,3,5,6]
let item = arr.find((item,index)=> {
console.log(item,index)
return item > 4
})
console.log(item,'data')
// 1 0
// 2 1
// 3 2
// 5 3
// 5 'data' 元素
// 可以看到,当遍历到 5时,跳出了循环
2.8 Array.findIndex(callback) 遍历数组,返回数组中第一个满足条件的索引(从0开始), 不满足返回-1
let arr = [1,2,3,5,6]
let item = arr.findIndex((item,index)=> {
console.log(item,index)
return item > 4
})
console.log(item,'data')
// 1 0
// 2 1
// 3 2
// 5 3
// 3 'data' 下标3
// 可以看到,当遍历到下标3时,跳出了循环
上面是开发中常用的数组的方法,基本能够满足开发中绝大部分的场景

JS 开发中数组常用的方法的更多相关文章

  1. javascript中数组常用的方法和属性

    前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属 ...

  2. javascript中数组常用的方法

    在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...

  3. JS(TS)中数组常见的方法(未完待续)

    push():向数组末尾添加一个或多个元素 unshift(): 向数组的开头添加一个或多个元素 pop(): 删除数组最后一个元素 shift(): 删除数组第一个元素 sort(): 给数组排序  ...

  4. iOS开发中数组常用的五种遍历方式

    随着iOS的不断发展,apple也不断推出性能更高的数组遍历方式,下面将对熟悉的五种遍历方式进行列举. 首先定义一个数组,并获取数组长度 NSArray *array=@[",]; NSIn ...

  5. iOS开发中一些常用的方法

    1.压缩图片 #pragma mark 处理图片 - (void)useImage:(UIImage *)image { NSLog(@"with-----%f heught-----%f& ...

  6. JS 数组常用的方法

    数组常用的方法: x.toString()方法:任何对象都有toString方法.        将任何对象转为字符串. 一般不主动调用,系统在需要时自动调用 x.valueOf()方法:同toStr ...

  7. js正则表达式中test,exec,match方法的区别说明

    js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...

  8. js开发:数组的push()、pop()、shift()和unshift()(转)

    js开发:数组的push().pop().shift()和unshift() 2017-05-18 11:49 1534人阅读 评论(0) 收藏 举报  分类: javascript开发(22)  版 ...

  9. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...

随机推荐

  1. Jmeter HTML 报告、Jenkins 配置

    目录 Jmeter 生成 HTML 测试报告 Jenkins 配置 Jmeter 生成 HTML 测试报告 JMeter 支持生成 HTML 测试报告, 以便从测试计划中获得图表和统计信息. 以上定义 ...

  2. Redis(一):安装

    Ubuntu中使用yum安装redis: sudo apt-get install redis-server # 安装redis,安装完成后会自动启动 ps aux|grep redis # 查看进程 ...

  3. 学习小记: Kaggle Learn - Machine Learning Explainability

    Method Feature(s) Sample(s) Result Value/Feature Permutation Importance 1 all validation samples Sin ...

  4. JavaScript 特殊字符

    代码输出\'单引号\"双引号\&和号\\反斜杠\n换行符\r回车符\t制表符\b退格符\f换页符

  5. 超实用的idea技巧,windows技巧,用于节省时间!

    进去https://zhangjzm.gitee.io/self_study 找平常积累,或者其它的

  6. Spring MVC拦截器浅析

    Spring MVC拦截器 重点:Spring MVC的拦截器只会拦截控制器的请求,如果是jsp.js.image.html则会放行. 什么是拦截器 运行在服务器的程序,先于Servlet或JSP之前 ...

  7. Element MenuNav刷新后点击菜单保留选中状态

    正常情况刷新后选中菜单会失去选中的状态,需要把default-active 当前激活菜单的 index保存下来这样刷新后读取 methods方法中增加 getSess() { this.active ...

  8. Operator 示例:使用 Redis 部署 PHP 留言板应用程序

    「Kubernetes 官方示例:使用 Redis 部署 PHP 留言板应用程序」Operator 化. 源码仓库:https://github.com/jxlwqq/guestbook-operat ...

  9. 使用SQL SERVER存储过程实现历史数据迁移

    今天讲下软件开发中最常见的历史数据迁移方式.在讲迁移之前,先简单介绍下几个基本概念. 1.什么是历史数据迁移? 简单直白地说:就是将一些创建时间比较久而且不常用的历史数据,存储到另一个地方(可以是另一 ...

  10. POJ3061——Subsequence(尺取法)

    Subsequence POJ - 3061 给定长度为n的数列整数a0,a1,a2-an-1以及整数S.求出总和不小于S的连续子序列的长度的最小值,如果解不存在输出0. 反复推进区间的开头和末尾,来 ...