一年后重翻javascript

     回想下自己的工作历程  一年多的ios开发眨眼间就过去了  不过这一切还没有结束,紧随其后的便是前段开发,虽然顶点基础都没有,但是还是通过我的不懈努力最终成功转型,虽然刚开始是通过jq直接入门的 但是回想起来好像自己也没有多学多少东西,今天,就是在今天我又重新翻开了javascript书,浏览了里面的各种方法,感觉自己要学习的还是很多很多的,那么今天我就首先从数组开始来讲解下我今天的收获,提起到数组,相信做过开发的是熟悉的不能再熟悉了,不过谈到里面的种种方法,相信像我一样的菜鸟加小白肯定是既熟悉又陌生的,那么下面就紧随我的步伐踏入数组的世界吧,来学习数组的博大精深.

  1.数组的创建在这里我就不多说了,下面便是我学习的第一个知识点了如何检测一个对象是不是数组:

当然检测数组的方法不只有一种,下面我就给大家展示两种原生的方法,上代码:

       /**
             * @description 检测对象是不是数组(这个方法有弊端,不推荐使用,这种在多个全局执行环境情况下会出现问题,慎用)
             * @param  {检测对象}
             * @return {[无返回值]}
             */
            function checkArray(value){
                if (value instanceof Array) {
                    alert(1111);
                }
            }
            var check = [1,2,3];
            checkArray(check);
            /**
             * @return {无返回值}
             */
            function checkArray2(value){
                if (Array.isArray(value)) {
                    alert(‘推荐方法‘);
                }
            }
            checkArray2(check);

以上code便是检测数组的两种方法.

  2.数组的栈方法(所谓栈方法也就是说,数组可以表现的像栈一样,后者是指可以限制插入项和删除项,栈是一种LIFO(后进先出)的数据结构,也就是最后添加的最早被移除,而栈中项的插入叫做推入,移除叫做弹出,push和pop方法是针对数组插入元素和移除元素的方法):

push():可以接受任意数量的参数,并返回修改后数组的长度;

pop():从数组末尾移除元素,减少数组长度,并返回移除的元素;

下面附上实例供大家参考:

            var colors = [0,1,5,10,15];
            alert(colors);
            var returnNew = colors.push(‘a‘,‘b‘,‘c‘);
            alert(returnNew);
            var delnew = colors.pop();
            alert(delnew);            

  以上就是数组的栈方法!

  同时和pop()相反的方法是shift(),他可以从数组的最前边移除项并返回,并且可以利用shift()和push()方法模拟队列操作(先进先出);

  3.数组的重排序:

  说到数组的排序很多人肯定会首先想起来sort()和reverse()方法,但是殊不知sort()方法只是对字符串进行排序,不是那么的严谨而reverse()方法则是对数组进行颠倒操作,并没有实现排序,所以要想很好的完美的排序我们可以在sort()方法中传入排序函数实现,例子如下:

/**
             * @description [比较函数]
             * @param  {比较大小}
             * @param  {比较大小}
             * @return {比较结果}
             */
            function compare(value1,value2){
                if (value1>value2) {
                    return -1;
                } else if(value1==value2){
                    return 0;
                } else {
                    return 1;
                }
            }
            var ary1 = [‘yellow‘,‘red‘,‘blue‘];
            var ary2 = [‘1‘,‘2‘,‘3‘,‘4‘];
            var arybig = ary1.concat(ary2, ‘black‘);//合并数组
            var sliceary=arybig.slice(2,4);//分割数组,都不影响原数组,只是拷贝返回的是从开始位置到结束位置的所有元素
            document.write(‘<br>‘+‘数组1:‘+ary1+‘<br>‘+‘数组2:‘+ary2+‘<br>‘+‘大数组:‘+arybig+‘分割数组:‘+sliceary+‘<br>‘);

  4.splice()方法的使用,其方法可以删除元素,同时也可以向数组指定位置中插入元素,此方法算是功能最强大的方法之一了,下面举几个列子让大家看看,顺便说一句此方法不像上面的两个方法(concat和slice)splice是在修改原数组的基础上插入值得,该方法返回的是从数组中删除的值:

// /*
            // 数组splice的使用
            //  */
            var spliAry = [1,2,3,4,5,6,7,8];
            var a = spliAry.splice(1, 3);//从下表为1的位置开始删除3个元素返回[2,3,4]
            var b = spliAry.splice(1, 0,‘a‘,‘b‘,‘c‘);//添加三个元素;返回空数组
            var c = spliAry.splice(1, 3,‘a‘,‘c‘,‘e‘);//删除并添加 返回[2,3,4]
            document.write(spliAry+‘<br>‘+a+‘<br>‘+b+‘<br>‘+c+‘<br>‘);

  5.数组的位置方法(indexof和lastindexof)

  这两个方法都可以接受两个参数,第一个参数是必选的(查找项),第二个参数是可选的也就是查找的起始位置;两者唯一的不同就是查找顺序不同,前者是从数组开始查找,后者则是从数组末尾开始查找知道找到指定元素位置,如果未查到则返回-1,如果查到则返回该元素在数组中的位置

  6.数组的迭代方法

1.every()对数组每一项运行指定函数,如果该函数每一项都返回true,则返回true;

2.filter()对数组每一项运行指定函数,返回返回true元素组成的数组;

3.forEach()对数组每一项运行给定函数,该方法没有返回值;

4.map()对数组每一项运行给定函数,该方法返回每次函数调用结果组成的数组;

5.some()对数组每一项运行给定函数,如果数组中任何一项满足条件返回true,则返回true;

以上方法都不会修改原数组中的值.下面分别举例说明:

var array = [1,4,6,2,7,3];
            var everyitem = array.every(function(item,index,array){
                return item>2;
            })
            document.write(everyitem);//输出false
            var everyitem = array.some(function(item,index,array){
                return item>2;
            })
            document.write(everyitem);//输出true
            var everyitem = array.map(function(item,index,array){
                return item*2;
            })
            document.write(everyitem);//输出[2,8,12,4,14,6]
            var everyitem = array.filter(function(item,index,array){
                return item>2;
            })
            document.write(everyitem);//输出[4,6,7,3]

  7.数组的缩小方法reduce()和reduceRight(),两者唯一的区别就是一个从数组开始另一个是从数组结束,这两个方法都可以接受四个参数,第一个是数组的前一项,第二个是当前项,索引值和数组,所以说这两个方法的区别就是取决于从那头开始便利数组,下面附上简单code示例:

var array = [1,4,6,2,7,3];
            var result = array.reduce(function(prev,cur,index,array){
                return prev+cur;
            })
            document.write(result);//输出23 也就是1+4+6+2+7+3
            var result = array.reduceRight(function(prev,cur,index,array){
                return prev+cur;
            })
            document.write(result);//输出23 也就是3+7+2+6+4+1

   输出结果都是23,只是相加顺序不同罢了,所以这就是两者唯一区别了,以上就是我今天对array的认识, 也算是掌握了新的只是,在这里我统统记录下来,希望可以让更多的友友看到,能够帮助更多的人,好了今天的学习与积累就到这里了,明天有时间还会继续,希望大家多多关照,有什么遗漏的还望指出或者给出建议,Bye!

时间: 2024-08-04 14:21:08

一年后重翻javascript的相关文章

《大话西游》20年后重映(附影评:《大话西游》你真的看懂了吗?)

2014-10-25 02:43:24 来源: 北京日报(北京) 本报讯 (记者 周南焱)"电影里的台词差点儿都能背,但在影院里再看还是会笑.看到最后紫霞仙子死的时候.还是忍不住落泪! "昨天下午,经典老片<大话西游>在海航活力天宝影城又一次上映,一位重温影片的观众如是说.还有观众反映,用如今的电影技术水准来看,<大话西游>确实有点老土,但从内容来看还是那么亲切. 周星驰主演的<大话西游>20年前公映,当时票房大败. 但谁也没想到,该片通过盗版光碟和

带你重拾JavaScript(2)之console的你所不知道的功能

JavaScript最常用的调试工具就是console.info()了.console是浏览器中window对象的属性之一,由浏览器对象模型(BOM)提供,作用是访问浏览器控制台,你可以通过console输出有助于调试代码的字符串.数组.对象.console还附带了一些你平时不了解的好用方法,本文可以丰富你的调试工具. 我们一般通过 window.console.info('hello world'); 或者 console.info('hello world'); 由于window可以省略所以

重识JavaScript 之 JavaScript的组成

JavaScript由ECMAScript.DOM.BOM组成. 简单认识: ECMAScript:首先它不是一门编程语言,而是一个标准,规定这些浏览器的脚步语言必须按照它的规定去做. DOM          :D表示文档,O表示对象,M表示模型,组合起来就是:文档对象模型. BOM          :B表示浏览器,O表示对象,M表示模型,组合起来就是:浏览器对象模型. 深入理解: ECMAScript:是js的核心,提供了一些关键字,数据类型,运算符,对象,语句,等. DOM :提供了访问

重识JavaScript 之 数据类型的相互转换

字符串转换数字 var a = '1'; console.log(+a); console.log(a++); console.log(-a+3); console.log(parseInt(a)); console.log(parseFloat(a)); console.log(Number(a)); 数字转换字符串 var a = 1; a+'' String(a);a.toFixed();a.toLocaleString();a.toPrecision();a.toString(); 数组

重学JavaScript之匿名函数

1. 什么是匿名函数? 匿名函数就是没有名字的函数,有时候也称为< 拉姆达函数>.匿名函数是一种强大的令人难以置信的工具.如下: function a(a1, a2, a3) { // 函数体 } ==其他函数表达式== var a = function(a1, a2, a3) { // 函数体 } 以上两个例子在逻辑上等价,其主要的区别是: 前者会在代码执行前被加载到作用域中,而后者则是在代码执行到那一行的时候才会有定义.另一个重要的区别就是:函数声明会给函数一个指定的名字,而函数表达式则是

JavaScript简史, 浏览器的20年

在很久以前那时候还没有Yahoo,Google....人们还在用28.8kbit/s的"猫"上网, 用户注册或者登录的时候所有的验证都是在服务器验证的, 如果用户注册的时候用户名或者密码输入有误却提交了, 然后过了60秒服务器返回了一条消息说,"xxxx"错误, 用户疯了. 然后netscape navigator公司希望通过一种方式直接在客户端验证, 如果客户端验证通过, 那就再通过服务端验证,即减少了服务端的压力, 也提高了用户体验. 当时最牛逼的浏览器公司Ne

JavaScript之基础-1 JavaScript(概述、基础语法)

一.JavaScript 概述 JavaScript 概念 - JavaScript 是一种运行于 JavaScript解释器/引擎中的解释型脚本语言 - JavaScript 解释器作为JS脚本的运行环境,有如下两种呈现方式 - 独立安装的 JavaScript 解释器; - 嵌入在浏览器内核中的 JavaScript 解释器; - 目前 PC .平板.手机.机顶盒中安装的主要浏览器全部支持JavaScript JavaScript 发展史 - 1992年,Nombas公司为自己的CEnvi软

javascript常见编程模式举例

最近买到手了一本<javascript框架设计>,详细介绍开发js框架所用到的知识.初读一点,乐帝脆弱的理论修养就暴露无遗了,所以专门加强理论修养,重看javascript编程模式的举例.下面来介绍下js中,常见的编程模式.    1.命名空间    同其他高级语言一样,js中的命名空间概念,也是为了减少命名冲突,但js没有命名空间关键字.js实现命名空间的思路是定义一个全局变量,将此命名空间的变量和方法,定义为这个全局变量的属性. var MYAPP=MYAPP||{};//全局变量 MYA

缠中说禅:教你炒股票108课(转载)

股市闲谈:G股是G点,大牛不用套!(2006-05-12 19:02:25) 能和本ID聊股市的,如果有,最多就处在精子或卵子状态,连受精卵都算不上.而且股市游戏是靠干出来而不是说出来的,因此一般都不说.但看到有些人被这股市折腾得厉害,出于同情,又周末了,也就说两句.  一年前股市跌到1000点最腥风血雨时,当时看到很多人在网上很可怜,就用老ID给了一个明确的说法,叫"G股是G点",越腥风血雨就机会越大了.现在这个G点已经弄得让很多人受不了,绝大多数在市场中的人都是很犯贱的,跌也怕,涨