04_Javascript初步第二天(下)
- 错误对象
try{
aa();//这是一个未被定义的方法
}catch(e){
alert(e.name+":"+e.message);//输出:ReferenceError:aa is not defined
}finally{
alert('我总是被调用');
} - 对象是通过引用传递的
- 数组
- 调用时传递一个参数表示数组长度 - var arr=new Array(5)
超过两个参数则显示指定了数组中的值 - var arr=new Array(1,2,3'name',null,,); - arr.length只能计算索引为非负整数的元素
1、var arr=[,,] - arr.length的值为2
2、
var arr=[1,2,3];
arr['name']='yolo';//输出3,'name'的索引不是非负整数
arr[100]='yolo';//输出101,length从0开始计算
document.write(arr.length); var arr1=[1,2,3,4,5];
console.log(arr1.length);//输出5
console.log(arr1);// 输出 "1,2,3,4,5"
arr1.length=3;
console.log(arr1);//输出 "1,2,3",相当于删除了第三个之后的元素,如果要删除所有元素,只需要arr1.length=0;
Object.defineProperty(arr1,'length',{
writable:false
});//将length属性设为不可写的
arr1.length=0;
console.log(arr1.length); push()是用来在数组末端添加项,shift()在移除数组的第一个项(前端),实现队列的先进先出FIFO;pop()在数组末端移除项,unshift()在数组前端添加项;(http://blog.csdn.net/rachel_2016/article/details/52448170)
- 调用时传递一个参数表示数组长度 - var arr=new Array(5)
- 遍历数组
for循环遍历下标连续的数组
var arr=[1,2,'name'];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
} for-in遍历数组,包含继承下来的元素
var arr=[];
arr['name']='yolo';
arr['age']=23;
for(var i in arr){
console.log(arr[i]);
}
如果只想遍历自身属性,可以加if条件:if(arr.hasOwnProperty(i)) forEach()遍历数组(E大写),同样只能遍历下标连续的数组
var arr=[1,2,3]
arr.forEach(function(x){
console.log(x);
}) var arr=[1,2,3,4];
arr['name']='yolo';//forEach循环不能遍历到它
arr.forEach(my);
function my(element,index,array){
console.log('要处理的数组为:'+array);
console.log('元素索引:'+index+"--元素值:"+element);
}
输出:
要处理的数组为:1,2,3,4
元素索引:0--元素值:1
要处理的数组为:1,2,3,4
元素索引:1--元素值:2
要处理的数组为:1,2,3,4
元素索引:2--元素值:3 - 数组的常用函数
-
var arr=[1,2,11,20];
console.log(arr.join('-'));//join指定分隔符,输出: "1-2-11-20"
console.log(arr.reverse());//reverse反转数组,输出: "20,11,2,1"
console.log(arr.sort());//sort()按照Unicode排序,输出:"1,11,2,20"
//可以指定排序函数
arr.sort(function(a,b){
return a-b;//如果a比b大,返回一个大于0数,此时b排在a前面,即从小到大排序
});
console.log(arr);//输出:"1,2,11,20"
//通过元素属性排序,输出: "enid" "join" "yolo"
var user=[
{name:'yolo',age:23},
{name:'enid',age:18},
{name:'join',age:22},
];
user.sort(function(a,b){
if(a.name>b.name) return 1;
if(a.name<b.name) return -1;
return 0;
});
for(var i in user){
console.log(user[i].name);
}
var arr=[1,2];
res=arr.concat(3,4);//arr.concat([3,4]);
res=arr.concat([[3,4,5]]);//输出:[1, 2, Array(3)]
console.log(res);//输出:"1,2,3,4" var arr=[1,2,3,4];
res=arr.slice(0,2);//从数组中截取指定元素,slice(start,length),忽略length,则截取到末尾;输出: "1,2"
console.log(res);
var arr=['a','b','c','d','e'];
res=arr.splice(0,1);//从0开始,截取一个元素并返回这个元素,从原数组中删除这个元素
console.log(res);//输出:"a"
console.log(arr);//输出:"b,c,d,e" var arr=['a','b','c','d','e'];
var res=arr.splice(2);//从2开始截取到最后
console.log(res);//输出:"c,d,e"
console.log(arr);//输出:"a,b" var arr=['a','b','c','d','e'];
var res=arr.splice(0,2,'!','&','?');//从0开始,截取两个元素,额外添加后面的三个元素
console.log(res);//输出:"a,b"
console.log(arr);//输出: "!,&,?,c,d,e"
var arr=[1,2,3];
//map每个元素都调用指定函数
res=arr.map(function(x){
return x*x;
});//输出:"1,4,9"
console.log(res);
var arr=['a!','b','c!'];
res=arr.map(my);
function my(x){
return x.replace(/!/g,'?').toUpperCase();
};
console.log(res);//输出:"A?,B,C?"
var arr=[1,3,5,78];
res=arr.filter(function(x){
return x<5;
});
console.log(res);//输出:"1,3"
var arr=[1,3,5];
res=arr.reduce(function(a,b){
return a+b;
});
console.log(res);//输出:9
//解析:第一次传入:1,3 返回4
// 第二次传入:4,5 返回9 //every检测是否每个元素都符合条件,some检测是否有一个以上元素符合条件,返回布尔值
var arr=[1,2,3,18];
var res=arr.every(function(x){
return x<=10;
});
console.log(res);//输出:false
//indexOf last
var arr=['a','b','c','ab','ac','a'];
var res=arr.indexOf('a');//输出:0
res=arr.indexOf('A');//不存在,输出-1
res=arr.indexOf('a',2);//从索引2开始搜索,输出:5
res=arr.lastIndexOf('a');//输出:5,从最后一个元素开始搜索
console.log(res); Array.isArray(arr);//检测arr是否是一个数组
arr.toString();//将数组转换为字符串
-
04_Javascript初步第二天(下)的更多相关文章
- 04_Javascript初步第二天(上)
全局函数 isFinity() - 检测是否是无穷值(+infinity,-infinity,NaN返回false): isNaN() - 检测是否为数值 encodeURI(uri) - 将字符串编 ...
- 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析
[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...
- android从放弃到坚持放弃第二课(下)
续第二课( 下) 续第二课 下 活动的生命周期 返回栈 活动状态 活动的生存期 体验活动的生命周期 活动被回收怎么办 活动的启动模式 standard singleTop singleTask sin ...
- Selenium自动化测试第二天(下)
如有任何学习问题,可以添加作者微信:lockingfree 目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化 ...
- 初步了解Windows7下部署Sonar
1.准备工具: (1)Sonar 8.3版本. (2)PostgresSql 11版本. (3)Java 11. 详细获取地址可参考文章https://www.pianshen.com/article ...
- 《JavaScript权威指南》学习笔记 第二天 下好一盘大棋
前段学习js的时候总是零零散散的,以至于很多东西都模棱两可.时间稍微一久,就容易忘记.最主要的原因是这些东西,原来学的时候就不是太懂,以至于和其他知识无法形成记忆链,所以孤零零的知识特别容易忘记.重温 ...
- 04_Javascript初步第三天
事件 内联模型.脚本模型,DOM2级模型 <!--内联模型--> <input type="button" value="bt1" oncli ...
- 04_Javascript初步第一天
视频来源:麦子学院[看来是麦子的忠实粉丝] 讲师:King我只是想记住对应的中文翻译:Uncaught SyntaxError: missing ) after argument list//属性列表 ...
- Shell编程入门(第二版)(下)
... ... command n done #select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令 示例-select.sh [python] view plainc ...
随机推荐
- 利用JParticles制作粒子
JParticles 2.0发布,打造炫酷的粒子 一. 介绍 JParticles 2.0发布之前叫Particleground.js, 相信有在用的朋友应该不会陌生, 关于1.x的介绍可以看这里 二 ...
- Redis随笔(二)redis desktop manager 安装并且连接redis服务器
1.首先在win10下安装redis desktop manager 2.查看虚拟机防火墙状态,启动状态,则关闭掉 查看防火墙状态: systemctl status firewalld.servic ...
- 在webstorm开发微信小程序之使用阿里自定义字体图标
1.下载阿里图标,解压出来之后有个.css文件 然后复制这css里面的所有代码 2.新建一个wxss文件,例如我新建的就是iconfont.wxss,然后把刚才复制的所有代码,复制到这个文件里面去. ...
- vue的爬坑之路-------axios中this的指向问题
在自己的vue小项目中使用了axios这个插件,但是发现在axios请求数据成功之后的回调函数中this并不是指向当前vue实例, 在如下代码中 谷歌浏览器中报 this.goodsArr 未被定义 ...
- 数据结构之二叉树(BinaryTree)
导读 二叉树是一种很常见的数据结构,但要注意的是,二叉树并不是树的特殊情况,二叉树与树是两种不一样的数据结构. 目录 一. 二叉树的定义 二.二叉树为何不是特殊的树 三.二叉树的五种基本形态 四.二叉 ...
- Linux系统调用过程
1 系统调用的作用 系统调用是操作系统提供给用户(应用程序)的一组接口,每个系统调用都有一个对应的系统调用函数来完成相应的工作.用户通过这个接口向操作系统申请服务,如访问硬件,管理进程等等. 应用程序 ...
- jdbc+servlet+jsp实现登录验证
基础知识准备:sql的增删改查. 新增:insert into 表名称(字段名.....)values(字段名....). 修改:update 表名称 set 字段名="新值" ...
- Echarts---柱状图实现
做Echarts很简单,可以参看官网 http://echarts.baidu.com/index.html 作为程序员我们只需要把静态数据替换成我们自己需要的! 下面看一个自己做的例子: 还是先看看 ...
- java字符串比较
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在j ...
- [bzoj1301] [LLH邀请赛]参观路线
本题同bzoj1098 用个并查集,把连续的被访问过的点并起来..这样就不会尝试已经走过的点了. #include<cstdio> #include<iostream> #in ...