记笔记颇有必要——相信我,大多数人的记忆力是不可靠的。 javascript
——《与时间作朋友》李笑来java
值的有序集合数组
弱类型prototype
数组中的元素能够是各类类型的code
null
对象
undefined
ip
...原型
空间有限it
0~2^32-1( 42_9496_7295)console
var arr = [['ff',{ee:'dd'}],[e,dd]] var arr = [,,] //2 undefined
new Array(100);//100undefined new Array(1,2,'hi',{'touch':'me'})//[1,2,'hi',{touch:'me'}]
.push(xx)
//添加到后面
返回添加后数组的数组长度
//等于 arr[arr.length] = xx
.unshift()
//添加到前面
(单纯删除)
arr.length -= 1;
//删除最后一元素
.shift()
//把第一个牺牲出去
.pop()
//把最后一个牺牲出去
delete arr[0] // 至关于 arr[0] = undefined
略
做为一个对象来遍历这个数组时
当Array原型上定义了一个属性的时候,for i in arr
一个数组的时候,将会把原型上的这个属性也遍历出来,无论这个数组是在这以前仍是以后生成的。
var arr = [1,2,3] Array.prototype.x = 'inherited' for(i in arr){ console.log(i + ' ' + arr[i]); } //1 1 //2 2 //3 3 //x 'inherited'
解决方式
for(i in arr){ if(arr.hasOwnProperty(i){ //do somethings } }
遍历的顺序不肯定
由于对象不是有序的。
经过嵌套的循环
var arr = [[0,1],[1,2],[2,3]] for(var i =0;i<arr.length;i++){ console.log('row ' + i) for(var j =0;j<arr[i].length;j++){ console.log(arr[i][j]); } }
二位平面定位
三位空间点定位(使用三维数组
内部的元素构不成一个连续序列
通常length属性值比实际元素个数大
将数组比做一栋出租屋,里面按照输入的参数建了好几个房间。
除了部分建造时就不打算用来出租的空房间以外
若是存在没有人住的空房间
那么这个出租屋就是“稀疏出租屋”。
//按照输入的参数建了好几个房间 var apartment = [1,undefined,,4,'watch'] // 建造时就不打算用来出租的空房间 apartment[1] // undefined 1 in apartment // true // 没有人住的空房间 aprtment[2] // undefined 2 in apartment // false // 稀疏出租屋 apartment; // [1,undefined,,4,'watch']
这个空房间的产生可能因为:
建房子的时候输入的参数没有指明用途。var empty = [,,]
出租过程当中赶走了某些房客。delete arr[1]
具体来讲就是说: 存在某个空间没有元素的数组即是稀疏数组
in
{number} in {arr}
将会确认 arr[number]
这个位置有没有元素存在。
arr[i] == undefined
同检查元素是否存在