Open hanyuxinting opened 7 years ago
JS的数组是动态的~不必关心它怎么给你分配空间,也不用手动分配空间~ 还可能是稀疏的?就是有的位置可能没有值了。
数组是对象的特殊形式~~
function testArray(){ var empty = []; var three = [1,2,3]; var different = [1, '2', true, ,{test:1}]; var BS = 1024; var table = [BS, BS+1, BS+2]; var test = [[1], [2,3]]; var two = [1,2,]; console.log(two.length == 2);//true // 不嫌累?还是用直接量吧。请放弃下边的写法。 var a = new Array(); var a10 = new Array(10); var aString = new Array(3,4,'test'); different = [1, '2', true, ,{test:1}]; var d1 = different[1]; console.log(d1); different[5] = 'five plus'; console.log(different); different.push('six'); different.push('seven', 'eight'); different.unshift('zero'); //different : ["zero", 1, "2", true, undefined × 1, Object, "five plus", "six", "seven", "eight"] delete different[5]; //different : ["zero", 1, "2", true, undefined × 2, "five plus", "six", "seven", "eight"] 长度并不变。 var dif = different.pop(); // eight 9 dif = different.shift(); // zero 8 // 用数组的方式给对象赋值。 var o = {}; o[1] = 'test'; console.log(o);//{1: 'test'}; // 以下:数组索引是对象属性名的特殊类型,JS数组没有越界的说法。 var array = []; array['100'] = 1; console.log(array.length); //101 array[-1.2] = -1.2; console.log(array); //array.-1.2 console.log(array['-1.2']); // -1.2 // 上面 array 为稀疏数组。应用场景? // 然而这下边两个兵没有什么区别,从chrome运行结果来看。都是undefind var a1 = [,,]; var a2 = new Array(2); for(var i in a1){ console.log(i + ' ' + a1[i]); } for(var j in a2){ console.log(j + ' ' + a2[j]); } // 修改数组长度,特别是缩小时,会影响数组数据 var lenarray = [1,2,3,4,5]; lenarray.length = 3; // [1,2,3] lenarray.length = 0; // [] lenarray.length = 10;// [undefined*10] // 可以对数组进行一系列的property操作~冻结、定义等等。 var defArray = [1,2,3]; Object.defineProperty(defArray, 'length', { writable: false }); defArray.length = 0;//不报错,执行,但不起作用 // 数组遍历 }
JS的数组是动态的~不必关心它怎么给你分配空间,也不用手动分配空间~ 还可能是稀疏的?就是有的位置可能没有值了。
数组是对象的特殊形式~~