浅谈数组处理的方法
2017-11-23 00:15
211 查看
数组处理的方法有很多,如果我们想对里面的任何一项数据进行操作,那我们最常用的方法就是 for 循环, 有的时候for循环也特别麻烦,其实数组有很多操作数据的方法
一, map方法
如果你在用reat,这个方法一定是经常用到的,我们在渲染list列表的时候通常就会用这个方法
map(); 是对数组里面每一项数据进行操作,返回每次调用的结果组成的数组, 假如要给数组里面的每一个数乘以2
for方式
map方式
es6写法
二, filter
filter(); 顾名思义就是过去的意思,可以更加返回的条件进行筛选,加入有一个数组,里面是一个个对象,要筛选出符合条件的对象,就可以用这个方法,这个方法返回一个新的数组
三, every和some
every();和some为什么要写到一起呢,就是因为这两个方法长得太像了,every();对数组中每一项都给定行数,如果函数对每一项都返回true,则返回true; 而some,是对数组中每一项给定函数,只要有一项返回true, 则返回true, 有点类似于&& 与 || ,假如一个签到,要每个人到了才能开始,就可以用every
可以看到要每一个都满足条件,才会返回true,只要有一个不满足则返回false;
再来看看some();
some()只有所有的条件不满足才会返回false;
四, forEach
forEach();是对数组中每一项运行给定函数,但是没有返回值,这个方法和for循环差不多,只是写法上不一样而已,假如要给每一个对象都加一个属性,就可以用这个方法
五, reduce
reduce(); 每次只能接受两个参数,这两个参数就是当前的结果,和当前序列的下一项,这个方法常用在累加器上,其他的技巧暂时没有发现
如果数组里面是字符串,返回出来的数据就是每一项字符串拼接之后的新字符串
六, find 和 findIndex
find();传入一个测试条件,或者函数, 返回数组中符合条件的第一个元素.
findIndex(), 传入一个测试条件或者函数,返回素组中符合条件的第一个元素的索引值
当数组中的元素满足测试条件时,find和fandIndex返回符合条件的第一个元素或者索引,之后就不会再调用执行函数,如果都没有符合条件的元素,返回 -1;
比如要从一个数组中找出第一个大于 30 的元素和索引值
参考: https://juejin.im/post/5a0c16d16fb9a0450b65edad
一, map方法
如果你在用reat,这个方法一定是经常用到的,我们在渲染list列表的时候通常就会用这个方法
map(); 是对数组里面每一项数据进行操作,返回每次调用的结果组成的数组, 假如要给数组里面的每一个数乘以2
for方式
let arr = [1, 2, 3, 4, 5]; for (let i = 0; i < arr.lrngth; i ++) { arr[i] = arr[i] * 2; }
map方式
let arr = [1, 2, 3, 4, 5]; arr.map(function(item) { return item * 2 });
es6写法
let arr = [1, 2, 3, 4, 5]; arr.map(item => item * 2);
二, filter
filter(); 顾名思义就是过去的意思,可以更加返回的条件进行筛选,加入有一个数组,里面是一个个对象,要筛选出符合条件的对象,就可以用这个方法,这个方法返回一个新的数组
let list = [ {name: 'aa', age: 22}, {name: 'bb', age: 21}, {name: 'cc', age: 20}, {name: 'dd', age: 22} ] list.filter(function(item) { return item.age > 21; });
三, every和some
every();和some为什么要写到一起呢,就是因为这两个方法长得太像了,every();对数组中每一项都给定行数,如果函数对每一项都返回true,则返回true; 而some,是对数组中每一项给定函数,只要有一项返回true, 则返回true, 有点类似于&& 与 || ,假如一个签到,要每个人到了才能开始,就可以用every
let list = [ {name: 'aa', age: 22, isHell: true}, {name: 'bb', age: 21, isHell: true}, {name: 'cc', age: 20, isHell: true}, {name: 'dd', age: 22, isHell: true} ] list.every(item => item.isHell)
可以看到要每一个都满足条件,才会返回true,只要有一个不满足则返回false;
再来看看some();
some()只有所有的条件不满足才会返回false;
四, forEach
forEach();是对数组中每一项运行给定函数,但是没有返回值,这个方法和for循环差不多,只是写法上不一样而已,假如要给每一个对象都加一个属性,就可以用这个方法
五, reduce
reduce(); 每次只能接受两个参数,这两个参数就是当前的结果,和当前序列的下一项,这个方法常用在累加器上,其他的技巧暂时没有发现
如果数组里面是字符串,返回出来的数据就是每一项字符串拼接之后的新字符串
六, find 和 findIndex
find();传入一个测试条件,或者函数, 返回数组中符合条件的第一个元素.
findIndex(), 传入一个测试条件或者函数,返回素组中符合条件的第一个元素的索引值
当数组中的元素满足测试条件时,find和fandIndex返回符合条件的第一个元素或者索引,之后就不会再调用执行函数,如果都没有符合条件的元素,返回 -1;
比如要从一个数组中找出第一个大于 30 的元素和索引值
参考: https://juejin.im/post/5a0c16d16fb9a0450b65edad
相关文章推荐
- JSON对象、数组和处理JSON串的方法
- 数组的filter方法处理数组内对象元素时,会改变原值
- [踏石留印之Android] byte[]数组的截取方法arraycopy与串口数据流处理
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- 有关JVM处理Java数组方法的思考
- C# 字符串,数组,日期常遇到的处理方法(持续更新)
- C# 字符串,数组,日期常遇到的处理方法(持续更新)
- jQuery数组处理方法总结
- 浅谈linux系统下常见的故障与处理方法
- IE8及以下浏览器伪数组slice方法兼容处理
- 关于对字符串、数组处理的常见问题与方法,如获取带有空格字符串长度,数组长度等。getline(),sprintf()使用。
- Model基类与字典中嵌套数组时Model的处理方法
- 编写程序计算数组元素之和。要求编写函数三次,每次以不同的方法处理数组边界。
- asp.net mvc 批量保存 服务端获取客户端传进的数组参数的处理方法
- C# 字符串,数组,日期常遇到的处理方法(持续更新)
- C# 字符串,数组,日期常遇到的处理方法(持续更新)
- json格式对象和数组的不同处理方法
- 三,遍历方法 1$.each(数组/对象,function处理); //$对象 调用的 2$(选择器).each(function处理); //jquery对象 调用的
- jQuery处理json数据返回数组和输出的方法
- 记录个人数组、字符串自己常忘记的方法,以及ES常用处理方式