javascript 高级程序设计 六
上一节还有一个注意的地方:建议所有函数的必需参数使用命名参数,而非必须的参数使用对象来封装。
通过这几天的读书,发现了一个深入了解所学知识的一个捷径——读书。本来我在计算机这方法的所有知识一般都是从视频中摸索着学习的,
所以后来就养成了一个习惯,感觉学点东西没有视频讲解自己都有点学不下去。但是实习了以后发现没有那么一大把的时间来供我学习看视频,
幸好程序袁有生俱来的危机感使我意识到应该找到另一个学习到东西的途径,于是我就开始了阅读,当然我们阅读的时候一定要结合自己在项目
中遇到的问题,带着疑问来读书。这样我们就摆脱了一个大坑——都死书,死读书。
所以我再这里建议在刚刚学习计算机的时候我们应该看一点视频这样我们可以更快的发现自己的兴趣点,到了有一定基础的时候,应该换一
种得到知识的途径,因为书中记载的还是比较详细,并且我们得到一些知识也是一些人从书上得到的,然后转达给我门,但是每个人看书时认为
知识的重点都是不同的,我们从别人那里汲取的养分都是他们吸收完的,虽然这样再某种意义上我们可以更快的'入门',但是缺少了一种快感,一种
经过自己的思考后得到知识的快感。
好了,说了这么多总之一句话有条件的同志们开始读书吧。开始我们今天的内容。
Array数组
再这里建议大家创建数组和创建对象一样,我们都应该使用字面量表示法(如下),因为使用字面量来创建数组或者对象就不会调用Array或Object
的构造函数。提高一点效率。
var arr = ['red','green','blue'];
var obj = {
name: 'kim',
age: 12
};
array.length:不是一个只读的属性,还可以给数组赋值长度。
var arr = ['red','green','blue'];
arr.length = 4;
arr[3] = 'black';
alert(arr[3]);
检测数组instanceof,isArray:
对于一个网页,或者全局环境来书使用instanceof操作符就可以检测数组。
if(value instanceof Array){
//dosomething
}
instanceof他假定单一的全局执行环境,当网页包含多个框架,那就存在两个全局执行环境,如果你从第一个执行环境中传入到另一个执行环境一个数组
那么这个数组就与第二个全局执行环境的原生数组分别具有自己不同的构造函数。所以为了解决这个弊端,ECMAScript 5 中新增了Array.isArray();方法。
if(Array.isArray(arr)){
//dosomething
}
join:
var colors = ['red','blue','green'];
alert(colors.join('||'));//red||blue||green
模拟栈、队列
栈都操作的都是末端元素,我们可以用push(),来推入元素,用pop();来弹出元素。(LIFO)
var colors = ['red','blue','green'];
colors.push('black');
alert(colors[3]);//black
var item = colors.pop();
alert(item);//black
队列是在末端插入,在前端移除,用push()来推入,用shift();移除元素(FIFO)
var colors = ['red','blue','green'];
colors.push('black');
alert(colors[3]);//black
var item = colors.shift();
alert(item);//red
有shift就有unshift();就是在前端插入元素。这里就不再赘述了
数组排序:
reverse()就是反转数组顺序。
var arr = [1,2,4,5,3];
arr.reverse();
alert(arr);//35421
因为上面的方法不够灵活,就出现了 sort();
sort();方法会把数组中原有的元素都调用对应的toString()方法,然后比较String的大小,按照从小到大的顺序进行排序。
var arr = [0,1,5,10,15];
arr.sort();
alert(arr);//0,1,10,15,5因为字符串"10"位于字符串"5"的前面,所以这个方法也不狗灵活,因此sort()还可以接受一个比较函数
sort()接受一个比较函数,比较函数就是返回1说明第一个参数应该位于第二个参数之后,0就是两个参数相等,-1第一个参数位于第二个参数之前
function compare(value1,value2){
return value2 - value1;//意味着有大到小排序
}
var values = [0,1,5,10,15];
values.sort(compare);
alert(values);//15,10,5,1,0
其他array方法:
var colors = ['red','green','blue'];
var colors2 = colors.concat('yellow',[black,white]);//concat把接受到的参数一个个附加到原有数组的副本的后面,然后返回这个副本。
alert(colors2);//red,green,blue,yellow,black,white
var colors3 = colors.slice(1);//slice就是可以断章取意(基于这个数组的一个或多个重新创建一个数组),只有一个参数就是从参数这个下标到数组的最后,
var colors4 = colors.slice(1,2); //有两个参数就是从第一个参数这个下标开始取第二个参数这么长。
alert(colors3);//green,blue
alert(colors4);//green,blue
concat和slice都不会影响原有数组
var remove = colors.splice(0,1);//splice中只有两个参数那么说明是删除从第0个开始取到1这个长的元素
alert(colors);//green,blue
alert(remove);//red
var add = colors.splice(1,0,'yellow','black');//从下标是1的位置开始删除0个元素,然后再插入两个yellow,black两个元素
alert(colors);//green,yellow,black,blue
alert(add);//返回一个空数组
var replace = colors.splice(1,1,'red','pink');//就是在下标是1的位置删除1个元素,然后再插入两个red,pink两个元素
alert(colors);//green,red,pink,black,blue
splice操作的就是原有数组
indexOf()和lastIndexOf();接受两个参数一个是要查找的元素,第二个是查找起点位置的索引,indexOf()从前往后,lastIndexOf()从后往前
迭代方法:
every();就是迭代数组中的每一个元素,当所有元素都满足给定函数,并都返回true,则返回true
some();就是迭代数组中的每一个元素,只要有一个元素满足给定函数,并都返回true,则返回true
filter();就是迭代数组中的每一个元素,只要有一个元素满足给定函数,并都返回true,则返回这些项组成的数组
var numbers = [1,2,3,4,5,5,6,7,1];
var result = numbers.every(function(item,index,array){
return (item>4);
});
alert(result);//false
var result2 = numbers.some(function(item,index,array){
return (item>4);
});
alert(result2);//true
var result3 = numbers.filter(function(item,index,array){
return (item>4);
});
alert(result3);//5,5,6,7
map();对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组
var numbers = [1,2,3,4,4,3,2,1];
var results = numbers.map(function(item,index,array)){
return item * 2;
};
alert(results);//2,4,6,8,8,6,4,2
foreach();便利数组的每一项,对每一项执行一些自定义的操作,没有返回值
var numbers = [1,2,3,4,4,3,2,1];
numbers.foreach(function(item,index,array)){
//dosomething;
};
javascript 高级程序设计 六的更多相关文章
- JavaScript高级程序设计(六):关键字 void 和 delete 使用
一.void 1.概述:JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 2.语法:JavaScript void (express) 或则 JavaScri ...
- 《Javascript高级程序设计》阅读记录(六):第六章 下
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...
- 《Javascript高级程序设计》阅读记录(五):第六章 上
这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- javascript 高级程序设计 十二
1.组合使用原型模式和构造函数模式: 由于原型模式创建对象也有它的局限性------有智慧的人就把原型模式和构造函数模式进行了组合. function Person(name, age, job){/ ...
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...
- 《Javascript高级程序设计》阅读记录(七):第七章
<Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- 《JavaScript高级程序设计》笔记——第一章到第三章
2019年,新年伊始,我打算好好重读一下<JavaScript高级程序设计>这本前端必备经典书.每天半小时. 以下内容摘自<JavaScript高级程序设计> 2019-2-1 ...
随机推荐
- Spring Data MongDB空间索引(判断一个点Point是否在一个区域Polygon内)
这里要连接MongoDB数据库,在配置文件里:spring.data.mongodb.uri = mongodb://root:root@localhost:27017/happy 两个root分别是 ...
- echart生成饼状图
//绘制图表. echarts.init(document.getElementById('main')).setOption({ tooltip : { trigger: 'item', //触发类 ...
- elastastic search
curl -X PUT "10.97.184.40:9200/logstash-2015.05.18" -H 'Content-Type: application/json' -d ...
- ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力。
ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力. 1.http://www.yangqq.com/jstt/css3/2017-08-08/787. ...
- React中innerHTML的坑
[React中innerHTML的坑] 通过React Ref机制返回的对象,是一个阉割的DOM对象,并非原始DOM对象.比如,这个阉割版的DOM对象没有innerHTML对象. <button ...
- Linux 学习总结(一)
一.Linux系统有7个运行级别(runlevel) 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行 ...
- Jboss 数据源密码明文加密
转载:https://blog.csdn.net/iberr/article/details/40896479 备注:解密小程序没有测试,知识了解了加密解密过程.对自己的帮助是看懂了连接数据库的配置, ...
- CentOS 删除文件的常用命令
NO1. 删除当前目录的文件[root@rehat root]# rm test.txt NO2. 强制删除当前目录的文件,不弹出提示[root@rehat root]# rm -f test.txt ...
- es快照定时备份脚本
#!/bin/bashdata1=`date "+%Y%m%d"`data2="http://0.0.0.0:9200/_snapshot/my_backup/snaps ...
- pta l2-11(玩转二叉树)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784 题意:给定二叉树的结点个数n,其前 ...