为了账号安全,请及时绑定邮箱和手机立即绑定

ES5数组方法

标签:
JavaScript

ES5为Array做了大幅拓展

.indexOf / .lastIndexof

该方法用于查找数组内指定元素的位置,查到第一个之后返回其索引,没有找到则返回-1。lastIndexOf反向搜索,查到第一之后,返回其索引,但顺序还是取正序。

var arr = [2,3,4,"root","evenyao",3,8,7]console.log(arr.indexOf(3))   //1console.log(arr.indexOf(11))   //-1console.log(arr.lastIndexof(3))   //5


forEach

遍历数组,参数为一个回调函数,回调函数有三个参数

  1. 当前元素 value

  2. 当前元素索引值 i

  3. 整个数组 array

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

arr.forEach(function(value,i,array){    array[i]= value + 1})

console.log(arr); //[2, 3, 4, 5, 6, 7]
var arr  = [3,4,"evenyao"]
arr.forEach(function(value,index){    console.log('' + value+value)
})//33//44//evenyaoevenyao


map

遍历数组,回调函数。返回值做操作之后组成一个新数组返回,新数组索引结构和原数组一致,原数组不变

var arr = [1,2,3,4,5,6]var arr2 = arr.map(function(val){    return val * val
})console.log(arr)   //[1, 2, 3, 4, 5, 6]console.log(arr2)   //[1, 4, 9, 16, 25, 36]


every、some

逻辑判定,回调函数返回一个布尔值

  • every是所有函数的每个回调函数都返回true,才返回true,遇到false就终止执行,返回false

var arr = [1,2,-1,0,5]
arr.every(function(val){    return val>0})  //false

webp

every false

var arr = [1,2,1,3,5]
arr.every(function(val){    return val>0})  //true

webp

every true

  • some是存在有一个回调函数返回true就终止执行并返回true,否则返回false

var arr = [1,2,-1,0,5]
arr.some(function(val){    return val>0})  //true


webp

some true




filter

返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加。新数组只包含返回true的值,原数组保持不变。

var arr = [3,5,6,-1,-2,-3]var arr2 = arr.filter(function(val){    return val > 0})console.log(arr)  //[3, 5, 6, -1, -2, -3]console.log(arr2)  //[3, 5, 6]

其他案例:

var users = [
  { name: "John", age: 15 },
  { name: "Pete", age: 19 },
  { name: "Ann", age: 12 }
]//筛选age > 18的用户var age18 = users.filter(function(user){    return user.age > 18})console.log(age18)

webp

filter

var users = [
  { name: "John", age: 15 },
  { name: "Pete", age: 19 },
  { name: "Ann", age: 12 }
]//筛选姓名中含有'n'的用户var namehasn = users.filter(function(user){    return user.name.indexOf('n')>-1})console.log(namehasn)


webp

filter2




reduce

遍历数组,调用回调函数,将数组元素组合成一个值,不影响原数组

  1. 回调函数:把两个值合为一个,返回结果

  2. value,一个初始值,可选

var arr = [3,4,5]
arr.reduce(function(v1,v2){    return v1 + v2
})  //12arr.reduce(function(v1,v2){    return v1 * v2 
})  //60//含value初始值arr.reduce(function(v1,v2){    return v1 + v2
},10)  //22arr.reduce(function(v1,v2){    return v1 * v2 
},10)  //600



作者:evenyao
链接:https://www.jianshu.com/p/9779ac375fbf


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消