资源描述:
《javascript原生数组函数探索》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、JavaScript原生数组函数探索在JavaScript中,可以通过两种方式创建数组,构造函数和数组直接量,其中后者为首选方法。数组对象继承自Object.prototype,对数组执行typeof操作符返回‘object’而不是‘array’。然而执行[]instanceofArray返回true。此外,还有类数组对象是问题更复杂,如字符串对象,arguments对象。arguments对象不是Array的实例,但却有个length属性,并且值能通过索引获取,所以能像数组一样通过循环操作。本文将讨论一些数组原型的方法,并探索这些方法的用法。循环.forEach断言.some和.every.
2、join和.concat的区别栈和队列.pop,.push,.shift和.unshift模型映射.map查询.filter排序.sort计算.reduce和.reduceRight复制.slice万能的.splice查找.indexOfin操作符走进.reverse如果你想测试上面的例子,您可以复制并粘贴到您的浏览器的控制台中。循环.forEach这是JavaScript原生数组方法中最简单的方法。不用怀疑,IE7和IE8不支持此方法。forEach方法需要一个回调函数,数组内的每个元素都会调用一次此方法,此方法需要三个参数如下:value当前操作的数组元素index当前操作元素的数组索引a
3、rray当前数组的引用此外,可以传递可选的第二个参数,作为每个调用函数的上下文(this)。['_','t','a','n','i','f',']'].forEach(function(value,index,array){this.push(String.fromCharCode(value.charCodeAt()+index+2))},out=[])out.join('')//<-'awesome'.join函数我将在下文提及,上面例子中,它将数组中的不同元素拼接在一起,类似于如下的效果:out[0]+''+out[1]+''+out[2]+''+out[n]。我们不能用break中断f
4、orEach循环,抛出异常是不明智的方法。幸运的是,我们有其他的方法中断操作。断言.some和.every如果你曾经用过.NET的枚举,这些方法的名字和.Any(x=>x.IsAwesome) 和 .All(x=>x.IsAwesome)非常相似。这些方法和.forEach类似,需要一个包含value,index,和array三个参数的回调函数,并且也有一个可选的第二个上下文参数。MDN对.some的描述如下:some将会给数组里的每一个元素执行一遍回调函数,直到有一个回调函数返回true位置。如果找到目标元素,some立即返回true,否则some返回false。回调函数只对已经指定值的数组
5、索引执行;它不会对已删除的或未指定值的元素执行。max=-Infinitysatisfied=[10,12,10,8,5,23].some(function(value,index,array){if(value>max)max=valuereturnvalue<10})console.log(max)//<-12satisfied//<-true注意,当回调函数的value<10条件满足时,中断函数循环。.every的工作行为类似,但回调函数要返回false而不是true。.join和.concat的区别.join方法经常和.concat混淆。.join(分隔符)方法创建一个字符串,会将数组
6、里面每个元素用分隔符连接。如果没有提供分隔符,默认的分隔符为“,”。.concat方法创建一个新数组,其是对原数组的浅拷贝(注意是浅拷贝哦)。.concat的标志用法:array.concat(val,val2,val3,valn).concat返回一个新书组array.concat()没有参数的情况下,会返回原数组的浅拷贝浅拷贝意味着新数组和原数组保持相同的对象引用,这通常是好事。例如:vara={foo:'bar'}varb=[1,2,3,a]varc=b.concat()console.log(b===c)//<-falseb[3]===a&&c[3]===a//<-true栈和队列.p
7、op,.push,.shift和.unshift每个人都知道向数组添加元素用.push。但你知道一次可以添加多个元素吗?如下[].push('a','b','c','d','z')。.pop方法和.push成对使用,它返回数组的末尾元素并将元素从数组移除。如果数组为空,返回void0(undefined)。使用.push和.pop我们能轻易模拟出LIFO(后进先出或先进后出)栈。functionS