大家有没有想过,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. ES6扩展运算符(三点运算符)...的用法

    1. 第一个叫做 展开运算符(spread operator),作用是和字面意思一样,就是把东西展开.可以用在array和object上都行. let a = [1,2,3]; let b = [0, ...

  2. Qt5之事件学习总结

    首先要明白一个概念,事件和信号并不一样,比如单击一下鼠标,就会产生鼠标事件(QMouseEvent),是对这个动作的描述,而因为按钮被按下了,按钮会发出clicked()的单击信号(是按钮控件产生的) ...

  3. MySQL——日志管理

    一.MySQL日志类型 1.错误:--log--error ---------------------*** host_name.err 2.常规: --general_log host_name.l ...

  4. 第07课:GDB 常用命令详解(下)

    本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 disassemble 命令 当进行一些高级 ...

  5. ARP原理和常见分类

    路由器一个重要功能是隔离广播域.就是不转发广播包,而ARP请求就是个广播包===> arp 代理 1. ARP交互流程: (1)目的地址和主机在同一个网段(A-C): A ----------- ...

  6. ysoserial CommonsColletions3分析(1)

    CC3的利用链在JDK8u71版本以后是无法使用的,具体还是由于AnnotationInvocationHandler的readobject进行了改写. 而CC3目前有两条主流的利用链,利用Trans ...

  7. SQL Server Management Studio --- SSMS语言更换

    问题描述 在安装了En版后,想更换为中文版,但换了中文安装源还是英文. 解决方法 运行 SQL Server Management Studio 通过菜单选择你想要使用的语言: 中文版:"工 ...

  8. -bash: ulimit: core file size: cannot modify limit: Operation not permitted

    一.问题描述 使用普通用户执行某个软件加载环境变量时报错 -bash: ulimit: core file size: cannot modify limit: Operation not permi ...

  9. 【死磕NIO】— 阻塞、非阻塞、同步、异步,傻傻分不清楚

    万事从最基本的开始. 要想完全掌握 NIO,并不是掌握上面文章([死磕NIO]- NIO基础详解)中的三大组件就可以了,我们还需要掌握一些基本概念,如什么是 IO,5 种IO模型的区别,什么是阻塞&a ...

  10. webpack learn4-1配置css单独分离打包

    1 先安装extract-text-webpack-plugin npm i extract-text-webpack-plugin 2 配置webpack.config.js