1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455
| //认识数组 //存储5个人的年龄,求他们的平均年龄 var age1 = 18; var age2 = 19; var age3 = 20; var age4 = 22; var age5 = 23;
var averageAge = (age1 + age2 + age3 + age4 + age5 ) / 5; console.log("averageAge = " + averageAge);
//思考:如果要保存100个人的年龄求他们的平均值,难道要定义100个变量吗??
//此时我们就需要数组了
/* 内置对象就是指的这个语言自带的一些对象,供开发者使用,这些对象提供了一些常用的或是最 基本而必要的功能
浏览器上面跑的js的内置对象有Math,String,Array,Date等
对象: 包含属性和方法(函数) 数组: 就是对象 可以存储多个不同类型的数据 */
var arr = [1,2,3,4,5]
console.log(arr[0])
// 数组的遍历
for (var i= 0;i < arr.length; i++){ //python 里面%s 通过后面赋值需要加个%号,这个不需要加,加个,号就可以了。()括号也不需要加。 console.log("arr[%s] = %d", i, arr[i]) }
for (var i in arr) { console.log("arr[%s] = %d",i ,arr[i]) } //forEach()遍历数组,是ECMAScript5.0中加入的,在低版本中的IE中无法使用 //forEach()中不能使用break和continue arr.forEach(function(e){ console.log(e) })
//创建数组两种方法
/*1、构造函数法 1.1、使用构造函数创建一个空数组 new 开辟空间并返回内存空间的引用 */ var arr1 = new Array(); console.log(arr1);
//1.2 使用构造函数创建一个容量为20的数组 var arr2 = new Array(20); console.log(arr2); //1.3、使用构造函数方法创建一个包含三个元素的数组 var arr3 = new Array("a","b", 1) console.log("arr3")
var arr = new Array(1,2,3,"sfe") console.log(arr)
var arr = new Array(5) arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; arr[5] = 6;
console.log(arr)
//2、数组字面量表示法,(相当于python的列表) //2.1、通过字面量创建空数组 var arr4 = []; console.log(arr4); //2.2、通过字面量创建一个包含三个元素的数组 var arr5 = [1,3,"abc"]; console.log(arr5)
//数组的访问
//直接取值对应的下标就可以了。下标从0开始
//数组的长度length、元素的更新、增加和删除length
var arr = [1,2,3,4]; //打印数组的长度(元素个数) //注意:不计算非下标类的属性名 console.log("数组arr长度: " + arr.length);
//改变数组的长度(增加) //其余元素默认值为undefined arr.length = 10; console.log(arr); console.log("arr[4] = " + arr[4]); console.log("arr[5] = " + arr[5]); console.log("arr[6] = " + arr[6]); console.log("arr[7] = " + arr[7]); console.log("arr[8] = " + arr[8]);
//改变数组的长度(减少) //多余的直接裁剪 arr.length=2; console.log(arr);
//通过索引一个之前不存在的位置来添加元素 arr[2] = 5; console.log(arr.length); console.log(arr);
//如果新元素添加的位置与原数组末端存在一定的间隔,那么 //这之间的元素将会被自动设置为undefined值 arr[5] = 10 console.log(arr.length);//6 console.log(arr); console.log("arr[3] = " + arr[3]); console.log("arr[4] = " + arr[4]);
/*删除: 用delete 操作符删除特定的元素 原数组长度不会改变 删除元素的位置只是被留空了而已,为undefined值
*/ delete arr[2]; console.log(arr.length); //6 console.log(arr); console.log("arr[2] = " + arr[2]);
//数组的常用方法 /*1、push(item1,item2....) 功能:向数组的末尾插入元素 参数: 一个或多个数组元素 返回值: 数组改变之后的容量 */
var arr1 = [1,2,3]; var length1 = arr1.push(4,5) console.log("length1 = " + length1) //5 console.log(arr1); //[1,2,3,4,5]
/*2、unshift(item1,item2....) 功能:向数组的头部插入元素 参数: 一个或多个数组元素 返回值:数组改变之后的容量 */ var arr2 = [1,2,3]; var length2 = arr2.unshift(-1,0); console.log("length2 = " + length2) //5 console.log(arr2); //[-1,0,1,2,3]
/* 3、pop() 功能:删除数组末尾的元素 参数: 无参 返回值: 删除的元素 */
var arr3 = [1,2,3]; var value3 = arr3.pop(); console.log("value3 = " + value3) console.log(arr3)
/*4、shift() 功能: 删除数组头部的元素 参数: 无参 返回值: 删除的元素 */
var arr4 = [1,2,3]; var value4 = arr4.shift(); console.log("value4 = " + value4); console.log(arr4);
/* 5、join(str) 功能: 用参数字符串将数组中的元素拼接成一个新的字符串 参数: 拼接使用的字符串 返回值: 拼接后的字符串 不会改变原数组 */ var arr5 = [1,2,3,4]; var str5 = arr5.join("good"); console.log(arr5);//(4) [1, 2, 3, 4] console.log(str5);//1good2good3good4
/* 6、reverse() 功能: 将原数组元素倒置 参数: 无 返回值: 返回原数组 注意:原数组改变 */ var arr6 = [1,2,3,4] var ret6 = arr6.reverse(); console.log(arr6);//[4, 3, 2, 1] console.log(ret6);//[4, 3, 2, 1]
/* 7、slice(startIndex,endIndex) 功能: 截取数组元素 参数: 开始下标,结束下标 返回值: 截取到的数组元素组成的数组 注意: 1. 不包括arr[enIndex]元素,和python一样 2. 原数组不会改变 3. enIndex的值必须大于1并且不能小于startIndex的值 */ var arr7 = [1,2,3,4,5,6,7,8]; var ret7 = arr7.slice(0,6); console.log("***********") console.log(ret7);//[1, 2, 3, 4, 5, 6] console.log(arr7);// [1, 2, 3, 4, 5, 6, 7, 8]
/* 8、splice(下标,个数,item1,item2....) 必须的参数: 下标,个数 可选的参数: item1,item2... 功能: 在数组中间插入或者删除数组元素,如果要插入元素的话,个数为0 返回值: 被删除的元素组成的数组 */
//splice插入方式 var arr8 = [1,2,3,4,5]; var ret8 = arr8.splice(2,0,8,9); console.log(ret8)//[] console.log(arr8);//[1, 2, 8, 9, 3, 4, 5]
//splice删除方式 ret8 = arr8.splice(3,2); console.log(ret8)//[9,3] console.log(arr8); //[1, 2, 8, 4, 5]
/* 9、concat() 功能: 将两个数组拼接 参数: 一个或者多个数组 返回值: 新数组,数组元素是所有拼接的数组元素。 注意: 对原数组没有影响 */ var arr9 = [1,2,3,4]; var str9 = [8,9] var acp9 = [0,6,8]; var ret9 = arr9.concat(str9,acp9); console.log(arr9); console.log(str9);//[8,9] console.log(acp9);//[0,6,8] console.log(ret9);//1, 2, 3, 4, 8, 9, 0, 6, 8]
/*10、 indexOf() 功能: 从数组的头部查找数组的元素,找到返回数组元素的下标, 否则话返回-1. 参数: 要查找的元素 返回值: 下标或者-1 */ var arr10 = [1,2,3,3,5]; var ret10 = arr10.indexOf(3); console.log(arr10);//[1, 2, 3, 3, 5] console.log(ret10);// 2 从头部开始查找
/* 11、lastIndexOf() 功能: 从数组的尾部查找数组的元素,找到返回数组的元素下标,否则返回-1 参数: 要查找的元素 返回值: 下标或者-1 */
var arr11 = [1,2,3,3,5]; var ret11 = arr11.lastIndexOf(3); console.log(arr11);//[1, 2, 3, 3, 5] console.log(ret11); //3 下标是3,从尾数开始查找
//sot()排序 //注意: 默认排序结果为升序 var arr1 = [4,2,5,1,3]; arr1.sort(); console.log(arr1); //改变sort()排序标准 var arr2 = [4,2,5,1,3]; arr2.sort(compare); //调用自定义的函数当参数传入 function compare(v1, v2) { // <改为>小于就是升序了 if (v1 < v2){ return 1; } return -1; } console.log(arr2);
//字符串的类型 var str1 = "yichen is a good man" var str2 = new String("yichen is a nice man")
console.log(str1) console.log(str2); console.log(typeof(str1)) console.log(typeof(str2)) console.log(str1.length) console.log(str2.length)
//字符串的常用方法
// 1、charAt(index) //获取指定下标的字符,下标从0开始 var str1 = "yichen尘 is a good man"; console.log(str1.charAt(2)); //c console.log(str1.charAt(6)); //尘
/* 2、charCodeAt(index) 获取指定下标的字符的ASCII码(Unicode) 返回值为0~65535之间的整数 */ var str2 = "yichen尘 is a good man逸"; console.log(str2.charCodeAt(2)); console.log(str2.charCodeAt(6));//23576 console.log(str2.charCodeAt(21));//36920
/*3、String.fromCharCode(ASCII码) 将ASCII码转换成对应的字符 */ var str3 = String.fromCharCode(36920); console.log(str3);//逸 var str4 = String.fromCharCode(66666666); console.log(str4);//䂪 //对象方法(示例方法) 对象名.XXX() //类方法(静态方法) 引用类名.XXX()
/*4、字符串大小写转换,返回转换后的结果字符串 */ var str4 = "YICHEN is a GooD Man!"; //将字符串中所有的大写字符转换成小写字符,小写字符不变 var ret4_1 =str4.toLowerCase();
//将字符串中所有的小写字符串转换成大写字符,大写字符保持不变 var ret4_2 = str4.toUpperCase();
//不会改变字符串本身,以返回值的形式返回结果 console.log("str4 = " + str4); console.log("ret_1 = " + ret4_1); console.log("ret4_2 = " + ret4_2);
/*5、判断是否相等 == 值相等 === 绝对相等(值和类型都相等) 10 == "10" true 10 === "10" false */
/*6、字符串比较大小 规则: 从左至右依次对比相同下标处的字符,当两个字符不相等时,哪个字符的ASCII值大, 那么字符串就大 返回值为1,左边大于右边,返回值为-1,右边大于左边。返回值为0则相等 */ var str6_1 = "za"; var str6_2 = "gbc";
var flag6 = str6_1.localeCompare(str6_2); console.log("flag6 = " + flag6);//1
if (flag6 > 0){ console.log("str_1 > str6_2"); } else if (flag6 < 0 ){ console.log("str6_1 < str6_2") } else { console.log("str6_1 = str6_2") }
//汉字比较大小 //Unicode
str6_1 = "逸尘" str6_2 = "很酷" console.log(str6_1 < str6_2);//false console.log(str6_1 > str6_2);//ture
//7、查找字符串 var str7 = "yichen is a good man! yichen is a nice man"; //正向查找 //返回第一次出现字符串的首下标 var ret7_1 = str7.indexOf("yichen"); console.log("ret7_1 = " + ret7_1);//0
//反向查找 //返回第一次出现字符串的首下标 var ret7_2 = str7.lastIndexOf("yichen"); console.log("ret7_2 = " + ret7_2);//22
/*8、替换字符串 replace(被替换的子串 , 新子串) 注意: 此时只能替换第一次出现的子串,如果想全替换需要正则 */ var str8 = "yichen is a good man!"; var ret8 = str8.replace("good", "niceya"); console.log("str8 = " +str8); console.log("ret8 = " + ret8);
/*9、提取子串 */ var str9 = "yichen is a good good man!" //从指定的下标截取到字符串结束,返回新字符串,新字符串是由被截取到的字符组成 console.log(str9.substring(3));//hen is a good good man!
//从参数1下标处开始截取到参数2下标之前(注意不包含参数2下标出的字符) console.log(str9.substring(3,9));//hen is
//从指定的下标截取到字符串结束。返回新字符串,新字符串是由被截取到的字符组成 console.log(str9.substr(3));
//从参数1下标开始截取参数2长度的字符串 console.log(str9.substr(3, 9));//hen is a
//10、字符串分割, var str10 = "yichen is a good man"; var arr10 = str10.split(' ');//一空格进行分割,生成新的列表 console.log(arr10); // ["yichen", "is", "a", "good", "man"]
//把列表组合起来, console.log(arr10.join("+"));//yichen+is+a+good+man console.log(arr10.join("=="));//yichen==is==a==good==man
//Math对象 //四舍五入 console.log(Math.round(3.6));//4
//向上取整 console.log(Math.ceil(3.1));//4
//向下取整 console.log(Math.floor(3.9));//3
//取最大值 console.log(Math.max(1,2,3,4,5));//5
//取最小值 console.log(Math.min(1,2,3,4,5));//1
//取绝对值 console.log(Math.abs(-3.4));//3.4
//求x的y次方(x = 2 , y = 3) console.log(Math.pow(2,3));//8
//开平方 console.log(Math.sqrt(25));//5
//随机输出x~y之间的一个整数(包含x和y) 6~2之间 console.log(parseInt(Math.random()* (6 - 2 + 1) + 2));
//公式 parseInt(Math.random() * (y - x + 1) + 2)
//输出100~0之间 console.log(parseInt(Math.random()* (100 - 0 + 1) + 0));
|