资讯专栏INFORMATION COLUMN

JavaScript:数组总结(二)

lijy91 / 337人阅读

摘要:函数接收个参数前一个值,当前值,项的索引,数组对象。第一次迭代发生在数组的第二项,因此第一个参数是是数组的第一项,第二个参数是数组的第二项。迭代从数组的第一项到最后一项迭代从数组的最后一项到第一项同上面结果一样。

博客同时同步到github

位置方法

这两个方法都接收两个参数:要查找的项和表示起点位置的索引(可选),indexOf()从数组开头开始向后查,相反的,lastIndexOf()从数组的末尾开始向前查找,返回查找的项在数组中的位置,没有找到返回-1。

1.indexOf()

var array = [1,2,3,2,1];
console.log(array.indexOf(2));//1

2.lastIndexOf

console.log(array.lastIndexOf(2));//3

兼容性:支持它们的浏览器包括IE9+,Firefox2+,Safari3+,Opera9.5+,Chrome

迭代方法

ECMASCript5为数组定义了5个迭代方法。每个方法接收两个参数:
要在每一项上运行的函数和运行该函数的作用域对象(可选)---影响this的值。
传入这些方法中的函数接收三个参数:
数组项的值(ele),该项在数组中的位置(index),数组本身(arr)。这5种方法都会对数组的每一项运行给定函数但是不同的方法的返回值不同。

every():若该函数对每一项都返回true,则返回true

var num = [1,2,3,2,1];
var result = num.every(function(item,index,array){
    return (item > 2);
    })
    console.log(result);//true

filter():返回该函数会返回true的项组成的数组

var num = [1,2,3,2,1];
var result = num.filter(function(item,index,array){
    return (item > 2);
    })
    console.log(result);//[3]

forEach():无返回值

var num = [1,2,3,2,1];
var result = num.forEach(function(item,index,array){
    return (item > 2);
    })
    console.log(result);//undefined

map():返回每次调用结果组成的数组

var num = [1,2,3,2,1];
var result = num.map(function(item,index,array){
    return (item > 2);
    })
    console.log(result);// [false,false,true,false,false]

some():如果该函数中有一项返回true,则返回ture

var num = [1,2,3,2,1];
var result = num.some(function(item,index,array){
    return (item > 2);
    })
    console.log(result);//true

声明:以上方法均不会修改数组本身
兼容性:支持它们的浏览器包括IE9+,Firefox2+,Safari3+,Opera9.5+,Chrome

缩小方法

ECMAScript增加了两个缩小数组的方法,这两个方法都会迭代数组中的所有项,然后构建一个最终返回的值。

这两个方法都接收两个参数:
一个在每一项上调用的函数,一个是作为缩小基础的初始值(可选)。
函数接收4个参数:
前一个值(pre),当前值(cur),项的索引(index),数组对象(arr)。
这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项,因此第一个参数是是数组的第一项,第二个参数是数组的第二项。

1.reduce():迭代从数组的第一项到最后一项

var val = [1,2,3]
var sum = val.reduce(function(pre,cur,index,array){
    return pre + cur;
    })
console.log(sum);//6
var a = [1,2,3,4,5];
a.reduce(function(pre,curr,index,arr){
console.log(pre);
console.log(curr);
console.log(index);
console.log(arr);
})

1
2
1
[1,2,3,4,5]

undefined
3
2
[1,2,3,4,5]

undefined
4
3
[1,2,3,4,5]

undefined
5
4
[1,2,3,4,5]

2.reduceRight():迭代从数组的最后一项到第一项
同上面结果一样。
兼容性:支持它们的浏览器包括IE9+,Firefox3+,Safari4+,Opera10.5+,Chrome

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86169.html

相关文章

  • JavaScript学习总结数组和对象部分

    摘要:属性是一个值或一组值以数组或对象的形式,是对象的成员。可以使用内置构造函数和创建包装对象。因此下面的代码将会使人很迷惑结果结果,此数组长度为应该尽量避免使用数组构造函数创建新数组。给数组对象添加返回数组中最大元素值的方法。 对象部分 Object类型 Object 是一个无序的集合,可以存放任意类型对象,所有其他对象都继承自这个对象。创建Object类型有两种,一种是使用new运算符,...

    Lsnsh 评论0 收藏0
  • 细说 Javascript 数组篇() : 数组的构造函数和常见操作

    摘要:数组的构造函数由于数组的构造函数在处理参数时的不确定性,因此强烈建议使用符号来创建一个新数组。总结综上所述,我们应该尽量使用来创建新函数,而不是数组的构造函数,这样代码将有更好的可读性。 数组的构造函数 由于数组的构造函数在处理参数时的不确定性,因此强烈建议使用 [] 符号来创建一个新数组。 [1, 2, 3]; // Result: [1, 2, 3] new Array(1, ...

    kaka 评论0 收藏0
  • Javascript:String对象总结()

    摘要:方法始终从前向后找参数接收两个参数,第一个参数可以是一个对象或者一个字符串这个字符串不会转换成正则表达式,第二个参数可以是一个字符串或者一个函数。要想替换所有子字符串,唯一的办法就是提供一个正则表达式,而且要指定全局标志标志。 字符串的模式匹配方法 match() 参数:只接受一个参数,要么是一个正则表达式,要么是一个RegExp()对象。 返回:数组。数组中的第一项是与整个模式匹配的...

    zzir 评论0 收藏0
  • 总结javascript基础概念():事件队列循环

    摘要:而事件循环是主线程中执行栈里的代码执行完毕之后,才开始执行的。由此产生的异步事件执行会作为任务队列挂在当前循环的末尾执行。在下,观察者基于监听事件的完成情况在下基于多线程创建。 主要问题: 1、JS引擎是单线程,如何完成事件循环的? 2、定时器函数为什么计时不准确? 3、回调与异步,有什么联系和不同? 4、ES6的事件循环有什么变化?Node中呢? 5、异步控制有什么难点?有什么解决方...

    zhkai 评论0 收藏0
  • JavaScript学习总结(六)数据类型和JSON格式

    摘要:并列数据的集合数组用方括号表示。第三种类型是映射,也就是一个名值对,即数据有一个名称,还有一个与之相对应的值,这又称作散列或字典,比如首都北京。中有种简单数据类型也称为基本数据类型和。数值布尔值对象和字符串值都有方法。 什么是JSON JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON的形式是用大括号{}包围起来的项目列表...

    laznrbfe 评论0 收藏0

发表评论

0条评论

lijy91

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<