js入门(7)

本文详细介绍了JavaScript中数组的filter、forEach、map、reduce、some等方法的使用,包括如何过滤元素、遍历数组、转换数据以及进行累加运算。同时,提供了求最大值的不同方法,并探讨了数组排序的实现。通过对这些基础方法的理解和实践,可以提升JavaScript编程能力。

arguments

arguments 类数组 存放所有的实参

类数组 具有索引值,但是不能使用数组下的api(push,pop,splice…)

filter 过滤

过滤

filter() 作用:过滤数组中元素,返回新数组存放过滤元素

参数 回调函数

回参一item 数组元素

回参二index 索引值

var res = arr.filter(function(item,index){

—> 是可以先修改元素,后筛选的

item arr 数组中元素 index 索引值

​ console.log(item,index);

return 后面跟 条件表达式

res 接受满足条件的所有元素;并存放在数组中

return item.age>32

})

foreach

forEach()作用:遍历数组

回参一:数组元素

回参二:索引值

arr.forEach(function(item,index){})

map

1.遍历数组 返回新数组

新数组中内容就是return 返回的内容

与过滤区别,过滤是根据条件筛选,返回条件表达返回值

item 数组元素 index 是索引

newArr 存放return返回的内容

var newArr = arr.map(function(item,index){

​ return item

})

2.修改数据,重组数据,原来的arr没变化

var res = arr1.map(function(item){

item = item * 2;

​ return item;

})

reduce

reduce() 没有初始值

可以用reduce 实现累加等运算,并返回运算结果

var arr = [1,2,3,5]

var res = arr.reduce(function(accumulator,currentValue,currentIndex,sourcArray)

​ {

accumulator 记录累计运算结果

accumulator 数组索引的元,这个元素是运算的操作数

currentIndex 索引值,不是从0开始的

sourArray 原数组

​ console.log(accumulator,currentIndex,currentValue,sourcArray);

​ return accumulator+currentValue;

​ })

注意 回参一 初始值为number类型 默认赋值 oders[0]

reduce(fun,param) 参二作用:给回参一sum赋初始值 改变默认orders[0]

var res = orders.reduce(function(sum,item){})

some

some() 检查数组中是否存在满足条件的元素,满足返回true;不满足 返回false

var res = produce.some(function(item){})

数组求最大值&最小值

求最大值 方式一

​ var max = arr[0];

​ for(var i=0;i<arr.length;i++){

​ var max = arr[0] // bug 永远都是初始化–> 导致第一个数于最后一个数组比较大小

​ max = Math.max(max,arr[i])

​ }

​ console.log(max);

求最大值 方法二

var max = arr.reduce(function(pre,next){

​ return Math.max(pre,next);

​ });

​ console.log(max);

方法三:利用排序

sort() 排序 参数 函数

arr1.sort(function(a,b){

a-b 升序 b-a 降序

注意 number类型排序,如果是字符串,更具第一个字符的编码值大小进行排序

return a-b

})

var max = arr1[arr.length-1]

​ console.log(arr1);

es6 很巧

​ var arr2 = [10,101,56,2,4,6,7,1];

​ var max1 = Math.max(…arr2);

​ console.log(max1);

数组排序

选值排序 将定某个位置是最大值

用将定的最大值 与其他元素比较

在比较过程中进行,如果存在与比最大值还大的数,就进行换值处理

以此类推,做到大值在前 小值在后 实现降序效果

for(var i = 0;i<arr.length;i++){

​ arr[i] // 用arr[i] 与数组中所有的元素

​ for(var j =0;j<arr.length;j++){

​ if(arr[i] > arr[j]){

​ 大值在前,小值灾后

​ 问题:arr[i] 前 arr[j] 后

​ —> 换值处理

​ var tmp = arr[i];

​ arr[i] = arr[j];

​ arr[j] = tmp

​ }

​ }

​ }

​ console.log(arr);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值