回想下本身的工做历程 一年多的ios开发眨眼间就过去了 不过这一切尚未结束,紧随其后的即是前段开发,虽然顶点基础都没有,可是仍是经过个人不懈努力最终成功转型,虽然刚开始是经过jq直接入门的 可是回想起来好像本身也没有多学多少东西,今天,就是在今天我又从新翻开了javascript书,浏览了里面的各类方法,感受本身要学习的仍是不少不少的,那么今天我就首先从数组开始来说解下我今天的收获,提起到数组,相信作过开发的是熟悉的不能再熟悉了,不过谈到里面的种种方法,相信像我同样的菜鸟加小白确定是既熟悉又陌生的,那么下面就紧随个人步伐踏入数组的世界吧,来学习数组的博大精深.javascript
1.数组的建立在这里我就很少说了,下面即是我学习的第一个知识点了如何检测一个对象是否是数组:java
固然检测数组的方法不仅有一种,下面我就给你们展现两种原生的方法,上代码:ios
/** * @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():从数组末尾移除元素,减小数组长度,并返回移除的元素;学习
下面附上实例供你们参考:spa
var colors = [0,1,5,10,15]; alert(colors); var returnNew = colors.push('a','b','c'); alert(returnNew); var delnew = colors.pop(); alert(delnew);
以上就是数组的栈方法!code
同时和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!