JS新手入门数组处理的实用方法汇总


Posted in Javascript onApril 07, 2021

join()方法:将数组中所有元素通过指定分隔符连接成一个字符串

举例:

myArr.join('-') // 用'-'符号拼接

concat()方法:将两个数组或多个数组合并成一个数组

举例:

myArr.concat(arr1, arr2, ..., arrN)

注意:该方法不会改变现有的数组,所以可以和空数组合并实现复制旧数组,在操作新数组数据时不污染旧数组数据

sort() 方法:用于对数组的元素进行排序

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较

举例:

myArr.sort() // 按字母排序
myArr.sort(function(a, b) {
	return a - b
}) // 按数字升序,降序为b - a
// 箭头函数写法
myArr.sort((a, b) => a - b)

reverse() 方法:用于颠倒数组中元素的顺序

举例:

myArr.reverse()

push() / unshift()方法:向数组的末尾 / 开头添加一个或多个元素,并返回新的长度

举例:

myArr.push(item1, item2, ..., itemN)
myArr.unshift(item1, item2, ..., itemN)

shift()方法:删除数组的第一个元素,并返回第一个元素的值

举例:

myArr.shift()

pop()方法:删除数组的一个元素(默认最后一个元素),并且返回该元素的值

举例:

myArr.pop() // 删除数组最后一个元素
myArr.pop(1) // 删除数组中索引为1的元素

splice()方法:向/从数组中添加/删除项目,然后返回被删除的项目

myArr.splice(index, count, item1, item2, ..., itemN)
// index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置
// count 必需。要删除的项目数量。如果设置为 0,则不会删除项目
// item1, item2, ..., itemN 可选。向数组添加的新项目

forEach()方法:方法用于调用数组的每个元素,并将元素传递给回调函数(相当于for循环)

举例:

myArr.forEach(function (item, index, arr) {
 if (index === 3) {
 item = 123
 } 
}) // 循环数组,将索引为3的元素值更改为123
// 箭头函数写法
myArr.forEach((v, i, arr) => if (i === 3) { v = 123 })

注意:以下方法均不会对空数组进行检测,不会改变原始数组

indexOf()方法:查找数组是否存在某个元素,返回下标,没有则返回-1

举例:

myArr.indexOf(item)

注意:indexOf() 方法对大小写敏感!

slice()方法:可提取字符串的某个部分,并以新的字符串返回被提取的部分(浅拷贝数组的元素)

举例:

const newArr = myArr.slice(0, 1)
// 截取数组myArr索引从0到1的部分元素
// 参数:
// begin(可选): 索引数值,接受负值,从该索引处开始提取原数组中的元素,默认值为0。
// end(可选):索引数值(不包括),接受负值,在该索引处前结束提取原数组元素,默认值为数组末尾(包括最后一个元素)

every()方法:用于检测数组中的元素是否满足指定条件(函数提供)(如某个值是否都为true)

如果有一个元素不满足,则整个表达式返回 false,且停止检测;如果所有元素都满足条件,则返回 true

举例:

const state = myArr.every(function (item, index, arr) {
 return item > 10
}) // 检测数组myArr的所有元素是否都大于10,返回一个布尔值state
// 箭头函数写法
const state = myArr.every((v, i, arr) => v > 10)

some()方法:用于检测数组中的元素是否满足指定条件(函数提供)(如某个值是否都为true)

如果有一个元素满足,则整个表达式返回 true ,且停止检测;如果没有满足条件的元素,则返回false

举例:

const state = myArr.some(function (item, index, arr) {
 return item > 10
}) // 检测数组myArr中是否存在元素大于10,返回一个布尔值state
// 箭头函数写法
const state = myArr.some((v, i, arr) => v > 10)

includes()方法:用于判断数组是否包含指定的值,如果找到匹配的值则返回 true,否则返回 false

注意:includes() 方法区分大小写

参数:
searchvalue:必需,要查找的值

start:可选,设置从那个位置开始查找,默认为 0

举例:

const state = myArr.includes(3) // 检测数组myArr中是否存在元素3,返回一个布尔值state
const state = myArr.includes(3, 3) // 从索引3开始检测数组myArr中是否存在元素3,返回一个布尔值state

filter()方法:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素

举例:

const newArr = myArr.filter(function (item, index, arr) {
 return item > 10
}) // 检测数组myArr中所有元素都大于10的元素,返回一个新数组newArr
// 箭头函数写法
const newArr = myArr.filter((v, i, arr) => v > 10)

map()方法:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

map()方法按照原始数组元素顺序依次处理元素

举例:

const newArr = myArr.map(function (item, index, arr) {
 return item * 10
}) // 数组myArr中所有元素都乘于10,返回一个新数组newArr
// 箭头函数写法
const newArr = myArr.map((v, i, arr) => v * 10)

举例(用于数组嵌套对象的类型):

const newArr = myArr.map(function (item, index, arr) {
 return {
 id: item.id,
 newItem: '123'
 }
}) // 处理数组myArr中指定的对象元素里面的元素或新元素,返回一个新数组newArr
// 箭头函数写法
const newArr = myArr.map((v, i, arr) => {
 return {
 id: v.id,
 newItem: '123'
 }
})

find() / findIndex()方法:返回通过测试(函数内判断)的数组的第一个元素的 值 / 索引。如果没有符合条件的元素返回 undefined / -1

举例:

const val = myArr.find(function (item, index, arr) {
 return item > 10
}) // 返回数组myArr中第一个大于10的元素的值val,没有则返回undefined

const val = myArr.findIndex(function (item, index, arr) {
 return item > 10
}) // 返回数组myArr中第一个大于10的元素索引,没有则返回-1

reduce()方法:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

这个方法接收两个参数:要执行的函数,传递给函数的初始值

要执行的函数(total, currentValue, currentValue, arr):

total:必选,初始值, 或者计算结束后的返回值

currentValue:必选,当前元素;

currentValue:可选,当前元素索引;

arr:可选,当前元素所属的数组对象

举例1:

const myArr = [1, 2, 3]
const sum = myArr.reduce(function(pre, cur, index, arr) {
 console.log(pre, cur)
 return pre + cur
})
console.log(sum)
// 输出值分别为
// 1, 2
// 3, 3
// 6

举例2(设置初始迭代值):

const myArr = [1, 2, 3]
const sum = myArr.reduce(function(pre, cur, index, arr) {
 console.log(pre, cur)
 return prev + cur
}, 2)
console.log(sum)
// 输出值分别为
// 2, 1
// 3, 2
// 5, 3
// 8

应用:

1.求和、求乘积

const myArr = [1, 2, 3, 4]
const result1 = myArr.reduce(function(pre, cur) {
 return pre + cur
})
const result2 = myArr.reduce(function(pre, cur) {
 return pre * cur
})
console.log(result1) // 6
console.log(result2) // 24

2.计算数组中每个元素出现的次数

const myArr = ['liang','qi','qi','liang','ge','liang'] 
const arrResult = myArr.reduce((pre,cur) =>{
 if(cur in pre){
  pre[cur]++
 }else{
  pre[cur] = 1
 }
 return pre
},{})
console.log(arrResult) // 结果:{liang: 3, qi: 2, ge: 1}

3.对对象的属性求和

const myArr = [
 {
  name: 'liangqi',
  weigth: 55
 },{
  name: 'mingming',
  weigth: 66
 },{
  name: 'lele',
  weigth: 77
 }
]
const result = myArr.reduce((a,b) =>{
 a = a + b.weigth
 return a
},0)
console.log(result) // 结果:198

Array.of()方法:用于将一组值转化为新数组

举例:

Array.of() // []
Array.of(undefined) // [undefined]
Array.of(1) // [1]
Array.of(1, 2) // [1, 2]

flat()方法:数组拍平方法也叫数组扁平化、数组拉平、数组降维,用于将嵌套的数组变成一维数组,返回一个新数组

举例:

const myArr = [1, [2, 3, [4, 5, [12, 3, "zs"], 7, [8, 9, [10, 11, [1, 2, [3, 4]]]]]]]
console.log(myArr.flat(Infinity)) // [1, 2, 3, 4, 5, 12, 3, "zs", 7, 8, 9, 10, 11, 1, 2, 3, 4]

总结

到此这篇关于JS新手入门数组处理的文章就介绍到这了,更多相关JS数组处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js跟随滚动条滚动浮动代码
Dec 31 Javascript
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
禁用Enter键表单自动提交实现代码
May 22 Javascript
JS弹出可拖拽可关闭的div层完整实例
Feb 13 Javascript
Bootstrap基础学习
Jun 16 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
微信小程序可滑动周日历组件使用详解
Oct 21 Javascript
原生JS实现音乐播放器
Jan 26 Javascript
vue backtop组件的实现完整代码
一文帮你理解PReact10.5.13源码
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
给原生html中添加水印遮罩层的实现示例
html实现随机点名器的示例代码
如何利用JavaScript实现二叉搜索树
(开源)微信小程序+mqtt,esp8266温湿度读取
You might like
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
js window.event对象详尽解析
2009/02/17 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
python比较两个列表大小的方法
2015/07/11 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
python如何读写csv数据
2018/03/21 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
考试退步检讨书
2014/01/15 职场文书
公司前台辞职报告
2014/01/19 职场文书
关于安全的演讲稿
2014/05/09 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
银行自荐信怎么写
2015/03/05 职场文书
工程项目合作意向书
2015/05/08 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js
tree shaking对打包体积优化及作用
2022/07/07 Java/Android
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers