数组
定义方法
- 数组字面量
var arr = [];
- 构造函数法
var arr = new Array();
// 若只传一个参数n,则创建一个长度为n的空数组;
// 若传多个,则正常创建数组
ESMAScript DOM BOM
es3.0 es5.0 es6.0
ESMAScript 目前所学的知识都是
DOM 通过js控制css
BOM 通过js控制浏览器
es3.0中数组的方法:
改变原数组
push, pop, shift, unshift, sort, reverse, splice
- push :往数组最后一位添加
- pop :把数组最后一位取出
- shift :把数组最前一位取出
- unshift :往数组最前一位添加
- reverse :逆转
- splice : array.splice(从第几位开始,截取长度,在切口处添加新的数据);
第一个参数(从第几位开始)可以是负数 -|n| ,内部计算 n < 0 , n += array.length. 视觉效果,倒数第|n|位 - sort :升序排序(ascii码)
改写为允许任意方法排序:
var arr = [];
// 1. 必须传两个形参
// 2. 看返回值:
// 1) 为负数,那么前面的数放在前面
// 2) 为正数,那么后面的数在前
// 3) 为0,不动
arr.sort(function(a,b){
// return a-b; 升序
// return b-a; 降序
// return Math.random() - 0.5; 乱序
// !!!应用对象
// eg. 按年龄排序
// return a.age - b.age; ...
// 按字节长度,按字符串长度.....
});
不改变原数组
concat, join --> split, toString, slice
-
concat :arr.concat(arr1); 将arr1接到arr后面,保存到另一个数组中,arr和arr1不受影响
-
toString : 把数组变成字符串显示
-
slice : 截取,保存到另一个数组中
silce(从第几位开始截取,截取到第几位);
silce(从第几位开始截取一直截到最后);
silce();//整个截取 -
join :将数组每一个用参数连接,返回一个字符串
eg. arr.join(’-’)
与splice互逆
类数组
var obj = {
"1" : 'a',
"2" : 'b',
"3" : 'c',
"length" : 3,
"push" : Array.prototype.push,
"splice" : Array.prototype.splice //加上后长得像数组
}
- 属性要为 索引(数字)属性,必须有 length 属性,最好加上push
- 好处:把 数组 和 对象 的特性拼到一起;需要把需要的数组方法手动添进去
- push方法的内容:
Array.prototype.push = function(target){
this[this.length] = target; //数组长度位处放置push进去的数据
this.length ++;
}