4.最全面的数组对象属性介绍(分类一目了然)
1 /** 2 * 数组对象的属性: 3 * */ 4 5 // 1.concat() 链接两个或者更多数组(返回链接后的数组,不改变原数组) 6 var arr = [1,2,3] 7 var arr1 = [4,5,6] 8 var temp = arr.concat(arr1) 9 console.log(temp) 10 console.log(arr) 11 console.log(arr1) 12 13 // 2.copyWithin() 从数组的指定位置拷贝元素到另一个指定位置 (返回调整位置后的新数组,并且原数组被改变) 14 // 第一个参数代表复制到指定目标位置 15 // 第二个参数代表复制的起始位置 16 var arr = [1,2,3] 17 var t = arr.copyWithin(2,0) 18 console.log(t) 19 console.log(arr) 20 21 22 // 3.every(function) 检测数值元素的每一个元素是否都符合条件,接收一个函数作为参数 (不会改变原始数组) 23 // 只要有一个不满足就会返回false,剩余元素不会检测 24 // 所有元素都满足条件,则会返回false 25 26 var arr = [1,2,3] 27 var test = (age) => { 28 console.log(age) 29 return age > 0 30 } 31 var suc = arr.every(test) 32 console.log(suc) 33 34 35 // 3.1 some(function) 方法用于检测数组中的元素是否满足指定条件(函数提供)。 36 // some() 方法会依次执行数组的每个元素: 37 // 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 38 // 如果没有满足条件的元素,则返回false。 39 40 /** 41 * some()和every()和find()区别: 42 * 1.every()检测的时候,只要检测到一个不满足条件的元素,就会返回false,后面的元素不再进行检测 43 * 2.some() 检测的时候,只有有一个元素,满足条件,就会返回true,后面的元素将不再进行检测 44 * 3.find() 检测的时候,当表达式返回true的时候,find()会返回满足条件的第一个元素,如果没有找到会返回undefined 45 * 4.filter() 检测的时候,会返回所有满足条件的所有元素,(以数组的形式返回) 46 * some()和every()共同点: 47 * 1.对于空数组,都不会进行检测 48 * 2.都不会改变原数组 49 * */ 50 51 52 // 4.1 filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 53 var arr = [1,2,3,4] 54 var x = arr.filter((age) => { 55 return age > 2 56 }) 57 console.log(x) 58 console.log(arr) 59 60 61 // 4.fill(arg) 使用一个固定值来填充数组 (会将原数组中的所有元素替换成指定值) 返回一个新的数组,并且原数组被改变 62 63 var arr = [1,2,3] 64 var t = arr.fill('oo') 65 console.log(t) 66 console.log(arr) 67 68 // 5.find(function) 用来查找符合条件的元素,返回查询到的结果如果没有找到返回undefined (以函数所谓参数传入) 69 70 var arr = [1,2,3] 71 var test1 = (age) => { 72 return age > 0 73 } 74 var test2 = (age) => { 75 return age > 3 76 } 77 console.log(arr.find(test1)) 78 console.log(arr.find(test2)) 79 80 81 // 6.finedIndex() 和find类似,不过find返回的元素,findIndex返回的是该元素的索引 (如果没有找到就返回-1) 82 83 var arr = [1,2,3] 84 var test1 = (age) => { 85 return age > 2 86 } 87 var test2 = (age) => { 88 return age > 3 89 } 90 console.log(arr.findIndex(test1)) 91 console.log(arr.findIndex(test2)) 92 93 // 7.forEach(callback(value, index, arr)) 用来遍历数组,数组中的每一个元素都会执行一遍回调函数,回调函数接收三个参数,分别为数组的元素,索引,和数组本身 94 95 var arr = [1,2,3] 96 var temp = arr.forEach((value, index, input) => { 97 console.log(`${value}+${index}+${arr}`) 98 input[index] = value*10 99 }) 100 console.log(temp) 101 console.log(arr) // 原数组被改变 102 103 // 9.indexOf(arg) 用来查找数组中指定元素的位置(返回该元素的索引,如果没有找到返回-1)(从第一个元素开始查找) 104 105 var arr = [1,2,3] 106 console.log(arr.indexOf(1)) 107 console.log(arr.indexOf(0)) 108 109 // 10.lastIndexOf() 与indexOf()功能一样,不过lastIndexOf()是从数组的最后一个元素向前查找的 110 111 // 11.map()也是遍历数组,他与forEach()的区别是,map会返回一个新的数组,不改变原数组,forEach会改变原数组 112 // map()中回调函数也有三个参数,和forEach类似,只是顺序不同,map回调函数的第一个参数是数组中的元素,第二个参数是元素的索引,第三个参数是数组本身 113 114 var arr = [1,2,3] 115 var x = arr.map((value,index,input) => { 116 console.log(`${value}+${index}+${input}`) 117 return value*10 118 }) 119 console.log(x) 120 console.log(arr) 121 122 // 12.pop()删除数组的最后一个元素,返回被删除的元素 123 124 var arr= [1,2,3] 125 var x = arr.pop() // 返回被删除的元素 126 console.log(x) 127 console.log(arr) // 原数组被改变 128 129 // 13.shift() 删除数组的第一个元素,返回被删除的元素,改变原数组 130 131 var arr = [1,2,3] 132 var x = arr.shift() 133 console.log(x) 134 console.log(arr) 135 136 // 14.push() 在数组的最后添加一个, 返回更新后的新数组,并且原数组也被改变 137 var arr = [1,2,3] 138 var x = arr.push(4) 139 console.log(x) 140 console.log(arr) 141 142 // 15.unshift() 在数组的最前面添加一个元素(返回更新后的数组,并且原数组也被改变),他和push的区别在于,一个是前一个后 143 var arr = [1,2,3] 144 var x = arr.unshift(4) 145 console.log(x) 146 console.log(arr) 147 148 // 16.reverse() 用于翻转数组(返回被翻转后的数组,并且改变原来的数组) 149 var arr = [1,2,3] 150 var x = arr.reverse() 151 console.log(x) 152 console.log(arr) 153 154 // 17.sort() 用于数组排序 (返回更新后的数组,改变原数组) 155 156 // (1).默认,如果是数字就是按升序排列,如果是字符串就按字典顺序排列 157 158 // 数字: 159 var arr = [2,1,3] 160 var x = arr.sort() 161 console.log(x) 162 console.log(arr) 163 164 // 字符串: 165 var arr = ['sde', 'dd', 'mm', 'aa'] 166 var x = arr.sort() 167 console.log(x) 168 console.log(arr) 169 170 // (2).接收一个函数,作为排序的条件 171 172 var arr = [3,4,25,2] 173 // // 升序 174 // var x = arr.sort((a,b) => {return a-b}) 175 // // 降序 176 var x = arr.sort((a,b) => {return b-a}) 177 console.log(x) 178 console.log(arr) 179 180 181 // 18.slice(),选取数组中的一部分,并返回一个新数组(不改变原数组) 182 183 // (1).一个参数的时候表示从第几个元素开始,然后到数组的最末未结束 184 var arr = [1,2,3,4,5] 185 var x = arr.slice(2) 186 console.log(x) 187 console.log(arr) 188 189 // (2).两个参数的时候表示要截取元素的范围 (第一个参数表示开始,第二个参数表示结束,注意:如果结束的参数大于开始的参数,返回一个空数组) 不改变原始数组 190 var arr = [1,2,3,4,5] 191 var x = arr.slice(0,2) 192 console.log(x) 193 console.log(arr) 194 195 196 // 19.splice() 从数组中添加或者删除元素 (原数组会被改变) 197 198 var arr = [1,2,3,4] 199 var x = arr.splice(0,1,3,4) 200 console.log(x) // 返回被删除的元素(以数组的形式返回) 201 console.log(arr) // 原数组被改变了 202 203 204 205 // 20.toString() 将数组转化为字符串,并返回结果 (不改变原数组) 206 var arr = [1,2,3,4] 207 var x = arr.toString() 208 console.log(x) // 返回转换后的结果 209 console.log(arr) // 原数组不被改变 210 211 212 // 22.valueOf() // 不改变原数组 213 var arr = [1,2,3,4] 214 var x = arr.valueOf() 215 console.log(x) // 返回数组的原始值 216 console.log(arr) 217 218 219 //23.reduce() 将数组元素计算为一个值(从左到右),接收一个处理数组元素的函数作为参数 220 // 不改变原数组 221 222 var arr = [1,2,3,4] 223 var x = arr.reduce((total, num) => { 224 // total 表示计算的初始值 225 // num 表示当前元素 226 console.log(total, num) 227 return total + num 228 }) 229 console.log(x) 230 console.log(arr) 231 232 // 24.reduceRight() 将数组元素计算为一个值(从右到左)接收一个处理数组元素的函数作为参数 233 // 不改变原数组 234 235 var arr = [1,2,3,4] 236 var x = arr.reduceRight((total, num) => { 237 // total 表示计算的初始值 238 // num 表示当前元素 239 console.log(total, num) 240 return total + num 241 }) 242 console.log(x) 243 244 245 // 26.join() 将数组转换为数组,不改变原数组 246 247 var arr = [1,2,3,4] 248 var x = arr.join() 249 console.log(x) 250 console.log(arr) 251 252 253 /** 254 * 改变原始数组的操作: 255 * 1.unshift() 256 * 2.push() 257 * 3.shift() 258 * 4.pop() 259 * 5.fill() 260 * 6.reverse() 261 * 7.sort() 262 * 8.slice() 263 * 9.splice() 264 * 10copyWithin() 265 * 数组属性的分类总结: 266 * 267 * 一:元素检测:(不改变原数组) 268 * 1.find() 269 * 2.every() 270 * 3.some() 271 * 4.filter() 272 * 273 * 二:元素查找:(不改变原始数组) 274 * 1.indexOf() 275 * 2.lastIindexOf() 276 * 277 * 三:元素操作: 278 * 增加:(改变原始数组) 279 * 1.unshift() (从头添加) 280 * 2.push() (从尾添加) 281 * 删除:(改变原始数组) 282 * 1.shift() (从头删除) 283 * 2.pop() (从尾删除) 284 * 计算:(接收一个函数作为计算方式,最终返回结算的结果) (不改变原始数组) 285 * 1.reduce() 286 * 2.reduceRight() 287 * 填充:(改变原始数组) 288 * 1.fill() 289 * 290 * 四:遍历元素: 291 * 1.forEach() 292 * 2.map() 293 * 294 * 295 * 五:数组排序:(改变原始数组) 296 * 1.reverse() 297 * 2.sort() 298 * 299 * 300 * 六:数组转字符串:(不改变原始数组) 301 * 1.join() 302 * 2.toString() 303 * 304 * 305 * 七:截取数组元素:(改变原始数组) 306 * 1.slice() 307 * 308 * 八:数组的添加/删除 (改变原始数组) 309 * 1.splice() 310 * 311 * 312 * 九:数组的连接 (不改变原始数组) 313 * 1.concat() 314 * 315 * 316 * 十:拷贝指定元素到指定位置 317 * 1.copyWithin()(改变原始数组) 318 * */