回想下自己的工作历程  一年多的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!

一年后重翻javascript的更多相关文章

  1. 重识JavaScript 之 JavaScript的组成

    JavaScript由ECMAScript.DOM.BOM组成. 简单认识: ECMAScript:首先它不是一门编程语言,而是一个标准,规定这些浏览器的脚步语言必须按照它的规定去做. DOM     ...

  2. 重拾javascript动态客户端网页脚本

    笔记一: 一.DOM 作用: ·              DOM(Doument Object Model) 1.document文档 HTML 文件 (标记语言) <html> < ...

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

    JavaScript最常用的调试工具就是console.info()了.console是浏览器中window对象的属性之一,由浏览器对象模型(BOM)提供,作用是访问浏览器控制台,你可以通过conso ...

  4. 重学JavaScript - 数组

    作者:狐狸家的鱼 GitHub:surRimn 整理自MDN文档 数组 数组是一种类列表对象,长度和元素类型不固定. 描述 访问数组 JavaScript数组的索引是从0开始的,第一个元素的索引为0, ...

  5. 2.重学javascript 对象和数组

    什么是对象,其实就是一种类型,即引用类型. 一.创建Object类型有两种. ①使用new运算符 <script type="text/javascript"> var ...

  6. 1.重学javascript (一)

    一.script标签解析 <script>xxx</script>这组标签,是用于在html 页面中插入js的主要方法.它主要有以下 几个属性: 1.charset:可选.表示 ...

  7. 重学JavaScript - 映射与集合

    作者:狐狸家的鱼 GitHub:surRimn 整理自MDN文档 带键的集合 映射 Map对象 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 — 一个 for...of 循环在每次迭代后会返 ...

  8. 复习 Array,重学 JavaScript

    1 数组与对象 在 JavaScript 中,一个对象的键只能有两种类型:string 和 symbol.下文只考虑键为字符串的情况. 1.1 创建对象 在创建对象时,若对象的键为数字,或者由 字母+ ...

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

    字符串转换数字 var a = '1'; console.log(+a); console.log(a++); console.log(-a+3); console.log(parseInt(a)); ...

随机推荐

  1. eclipse中build path 中JDK与java compiler compliance level的问题(转)

    roject facets做什么用? http://baike.baidu.com/view/6257360.htm,其实我感觉,就是让我们在创建项目时候,可以独立定义一个有一个模板供我们使用,在里面 ...

  2. DHCP租约时间工作原理

    问题:    很多用户在使用路由器的DHCP服务器过程中都有一个疑问,DHCP有个设置项目是设置DHCP地址的租约时间,如果设置的比较短,是否会出现租约时间到了以后会重新去获取ip地址,造成用户断网? ...

  3. Struts2 框架验证

    struts2框架验证(xml方式):    * 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法        * 创建一个xml格式验证文 ...

  4. MySql中的变量定义(转)

    根据mysql手册,mysql的变量分为两种:系统变量和用户变量.但是在实际使用中,还会遇到诸如局部变量.会话变量等概念.根据个人感觉,mysql变量大体可以分为四种类型: 一.局部变量. 局部变量一 ...

  5. java学习笔记(10) —— ActionContext、ServletActionContext、ServletRequestAware用法

    核心思想 1.ActionContext HttpServletRequest getAttribute setAttribute ActionContext get put //ActionCont ...

  6. 一行代码实现C#的四舍五入

    C# 使用的是”四舍六入五成双”的银行家算法: 1 2 Math.Round(2.5); // 2 Math.Round(1.5); // 2 由此可见,1.5的Round符合我们的四舍五入,于是Ha ...

  7. Web之CSS开发技巧: CSS 居中大全

    <center> text-align:center 在父容器里水平居中 inline 文字,或 inline 元素 vertical-align:middle 垂直居中 inline 文 ...

  8. c++ 输出时间

    [root@GZMJ_Logic_2 ]# cat lys.cpp #include "stdio.h" #include <iostream> #include< ...

  9. 数据库 数据库SQL语句五

    集合运算 union 并集(两个集合如果有重复部分,那么只显示一次重复部分) union all 并集(两个集合如果有重复部分,那么重复部分显示两次) intersect 交集 minus 差集 -- ...

  10. 完全教程 Aircrack-ng来PJ---WEP、WPA-PSK--加密利器

    恩,先说明一下,本章的内容适用于目前市面所有主流品牌无线路由器或AP如Linksys.Dlink.TPLink.BelKin等.涉及内容包括了WEP加密及WPA-PSK加密的无线网络的破解操作实战. ...