|
| 1 | +/* |
| 2 | +*数组的值得有序集合。每个值叫元素,每个元素在数组中有一个位置 |
| 3 | +*以数字表示成为索引。 |
| 4 | +*JavaScript 数组是无类型。元素随意,索引最大4294967294(2^32-2) |
| 5 | +*它是动态的,有length属性。 |
| 6 | +*用数字索引访问数组元素比常规的对象属性要快。 |
| 7 | +*数组继承Array.prototype属性,7.8-7.9 |
| 8 | +*数组的操作方法对“类数组对象”同样有效7.11 |
| 9 | +*字符串的行为与字符串数组类似7.12 |
| 10 | +*/ |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +//7.1 创建数组 |
| 18 | + |
| 19 | +//在方括号中将数组元素用逗号隔开 |
| 20 | + |
| 21 | +var b =[1,[1,{x:1,y:3}],,] |
| 22 | + |
| 23 | +/*[1, |
| 24 | + Array[2]=> |
| 25 | + 0: 1, |
| 26 | + 1: Object |
| 27 | + x: 1 |
| 28 | + y: 3 |
| 29 | + , undefined × 1] |
| 30 | +*/ |
| 31 | + |
| 32 | +//如果省略数组直接量的某个值,省略元素将被赋予undefined值 |
| 33 | +//数组直接量的语法允许有可选的结尾的逗号,故[,,]只有两个元素 |
| 34 | + |
| 35 | +//用构造函数Array创建 |
| 36 | +var a = new Array(); |
| 37 | +// 空数组 [] |
| 38 | + |
| 39 | +//指定长度 |
| 40 | +var a = new Array(10) |
| 41 | +//预选分配一个数组空间,数组中无值,无索引 |
| 42 | + |
| 43 | +var a = new Array(232,32,3,'teset'); |
| 44 | +//数组字面量 |
| 45 | +/** |
| 46 | +*var a =new Array(23,23,32,'tt',,,) 这样是错的 |
| 47 | +*/ |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | + |
| 53 | +//7.2数组元素的读和写 |
| 54 | +var arr =['world'] |
| 55 | +undefined |
| 56 | +arr |
| 57 | +["world"] |
| 58 | +var value = a[0] |
| 59 | +undefined |
| 60 | +value |
| 61 | +23 |
| 62 | +var value = arr[0] |
| 63 | +undefined |
| 64 | +value |
| 65 | +"world" |
| 66 | +a[1] = 2.3 |
| 67 | +2.3 |
| 68 | +i =2 |
| 69 | +2 |
| 70 | +arr[1] = 2.3 |
| 71 | +2.3 |
| 72 | +arr[i] = 3 |
| 73 | +3 |
| 74 | +a[i+1] ='hello' |
| 75 | +"hello" |
| 76 | +a[a[i]]=a[0] |
| 77 | +23 |
| 78 | +arr[i+1] ='hello' |
| 79 | +"hello" |
| 80 | +arr[arr[i]]=a[0] |
| 81 | +23 |
| 82 | +arr[arr[i]]=arr[0] |
| 83 | +"world" |
| 84 | +arr |
| 85 | +["world", 2.3, 3, "world"] |
| 86 | + |
| 87 | +//正常的数组设置访问 |
| 88 | + |
| 89 | +//数组是对象的特殊形式。 |
| 90 | +//所有的索引都是属性名,只有0-2^32-2之间的整数属性名才是索引。 |
| 91 | +//所有数组都是对象,可以创建任意名字的属性。 |
| 92 | +//但如果使用的属性是数组的索引,数组的特殊行为是更新length属性 |
| 93 | +//负数非整数的索引数组,数值转为字符串 |
| 94 | + |
| 95 | +arr[-9]=true |
| 96 | +true |
| 97 | +arr |
| 98 | +["world", 2.3, 3, "world"] |
| 99 | +arr[-9] |
| 100 | +true |
| 101 | +arr.length |
| 102 | +4 |
| 103 | +Object.getOwnPropertyDescriptor(arr,'-9') |
| 104 | +Object {value: true, writable: true, enumerable: true, configurable: true} |
| 105 | + |
| 106 | +//当访问不存在的属性时返回undefined |
| 107 | +//数组可以定义元素的getter和setter方法。 |
| 108 | + |
| 109 | + |
| 110 | +// 数组对象部分 访问方式 通过 “." 来访问 |
| 111 | +// 数组没字符索引,arr['str']被作为属性使用 |
| 112 | + |
| 113 | +arr = new Array(); |
| 114 | +[] |
| 115 | +arr[0]='this is arr' |
| 116 | +"this is arr" |
| 117 | +arr[10]='ten' |
| 118 | +"ten" |
| 119 | +arr |
| 120 | +["this is arr", undefined × 9, "ten"] |
| 121 | +arr['c']='int' |
| 122 | +"int" |
| 123 | +arr |
| 124 | +["this is arr", undefined × 9, "ten"] |
| 125 | +arr.c |
| 126 | +"int" |
| 127 | +arr.le |
| 128 | +undefined |
| 129 | +arr.length |
| 130 | +11 |
| 131 | +arr |
| 132 | +["this is arr", undefined × 9, "ten"] |
| 133 | +arr.length |
| 134 | +11 |
| 135 | + |
| 136 | +//7.3稀疏数组 |
| 137 | +//稀疏数组就是包含从0开始的不连续索引的数组 |
| 138 | +//当数组是稀疏数组数组时,length属性值大于元素的个数。此时,一切也是就数组长度保证大于它 |
| 139 | +//每个元素的索引值。 |
| 140 | +//为数组赋值时,索引i大于或等于数组长度时,length属性值将设为i+1 |
| 141 | +//设置length属性为小于当前长度的非负整数n时,当前数组中那些索引值大于或等于n的元素将从中删除。 |
| 142 | +//还可以将length的值设置大于当前索引长度,超出的部分创建为空的区域。 |
| 143 | +var m=[23,3,3,4,4,] |
| 144 | +m.length |
| 145 | +5 |
| 146 | +m.length =3 |
| 147 | +3 |
| 148 | +m |
| 149 | +[23, 3, 3] |
| 150 | +m.length =31 |
| 151 | +31 |
| 152 | +m |
| 153 | +[23, 3, 3, undefined × 28] |
| 154 | + |
| 155 | +//7.5 数组元素的添加和删除 |
| 156 | + |
| 157 | +为索引赋值 |
| 158 | +a = [];//空数组 |
| 159 | +a[0]='zero'; |
| 160 | +a[1]='one'; |
| 161 | + |
| 162 | +//使用push()想数组尾部添加一个或多个元素 |
| 163 | +a.push('zero','one') |
| 164 | +2 |
| 165 | +a |
| 166 | +["zero", "one"] |
| 167 | +//等同于a[a.length]赋值方式 |
| 168 | + |
| 169 | +//向数组首部插入一个元素 |
| 170 | +a.unshift('start') |
| 171 | +3 |
| 172 | +a |
| 173 | +["start", "zero", "one"] |
| 174 | +a[0] |
| 175 | +"start" |
| 176 | + |
| 177 | +//可以像删除对象一样使用delete 删除数组元素 |
| 178 | +delete a[1] |
| 179 | +true |
| 180 | +a |
| 181 | +["start", undefined × 1, "one"] |
| 182 | +1 in a //数组索引不在数组中定义 |
| 183 | +false // |
| 184 | +a.length //数组长度不变 |
| 185 | +3 |
| 186 | +//通过pop()方法来删除尾部元素返回删除值并减少length属性 |
| 187 | +//splice() 方法通过插入方法,删除或天幻数组元素 7.8节 |
| 188 | + |
| 189 | +//7.6数组遍历 |
| 190 | + |
| 191 | + |
| 192 | + |
0 commit comments