本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘。
数组是“多态数组" ,啥都可以放
1 //JavaScript中的多态数组 2 var arr = ["one", 2, true, 3 function (a, b) { return a + b; }, 4 [1,2,3] 5 ];
数组是一个对象,拥有自己的属性与方法
1 //数组是一个对象 2 console.info(arr); 3 console.info(arr.length);
访问与写入
访问
1 //数组元素通过下标访问 2 console.info(arr[0]); //one 3 //调用放在数组中的函数 4 console.info(arr[3](100, 200));//300 5 //访问放在数组中数组 6 console.info(arr[arr.length - 1].length);//3 7 //当读取没有内容的位置时,返回undefined 8 console.info(arr[100]);//undefined
写入:
1 var arr2 = []; 2 //向空数组赋值,将导致数组中添加一个元素 3 arr2[0] = "Hello"; 4 //读取新加入的元素 5 console.info(arr2[0].toUpperCase()); 6 //跳着赋值,将导致数组自动地增长 7 arr2[3] = 3; 8 console.info(arr2.length);//4 9 console.info(arr2);//["Hello", 3: 3] 10 //中间的值为undefined 11 console.info(arr2[1]); //undefined
在尾部追加:
1 //自动在尾部追加元素 2 var arr3 = []; 3 for (var i = 0; i < 5; i++) { 4 arr3[arr3.length] = i; 5 } 6 //数组内容为:[0, 1, 2, 3, 4] 7 console.info(arr3);
数组常用方法:
concat 直接连接两个数组的元素。
1 var left = [1, 2], right = [3, 4]; 2 console.info(left.concat(right)); //[1,2,3,4]
join 数组中每个元素通过分隔符相连.
1 var words = ["锤子", "剪刀", "布"]; 2 var result = words.join(‘<-->‘); 3 //锤子<-->剪刀<-->布 4 console.info(result);
数组当堆栈:
push 入栈
pop 出栈
1 var m_arr = [‘a‘, ‘b‘, ‘c‘]; 2 m_arr.push(‘d‘); 3 console.info(m_arr); //["a","b","c","d"] 4 m_arr.pop(); 5 console.info(m_arr); //["a","b","c"]
在开头操作数组元素:
unshift 开头插入
shift 删除开头
1 var arr = ["a", "b", "c"]; 2 arr.unshift("99"); 3 console.info(arr); //["99", "a", "b", "c"] 4 var shifted = arr.shift(); 5 console.info(shift); //99 6 console.info(arr); //["a", "b", "c"]
截取:
使用slice提取子数组
按[起始索引值,结束索引值) 来截取:
1 var bigArr = ["a", "b", "c", "d", "e", "f"]; 2 var subArr = bigArr.slice(1, 4); 3 console.info(subArr); //"b","c","d"
删除元素:
splice 从第n个索引值开始删除m个
1 var arr = ["a", "b", "c", "d", "e", "f"]; 2 arr.splice(2, 3); //索引值第2个开始删除3个 3 console.info(arr); // a, b, f
delete 虽删除但下标犹在.
1 var arr = ["a", "b", "c", "d", "e", "f"]; 2 delete arr[2]; 3 console.info(arr); //["a", "b", 3: "d", 4: "e", 5: "f"] 4 console.info(arr[2]); //undefined
当splice有多于2个参数时,就变成删除后再插入元素
1 var arr = ["a", "b", "c", "d", "e", "f"]; 2 arr.splice(2, 3,"one","two"); //索引值第2个开始删除3个后再插入 one , two 3 console.info(arr); // a,b,one,two,f
数组排序:
排序与反转:
1 var data = []; 2 for (i=0 ; i<=6; i++) { 3 data[data.length] = Math.floor(Math.random() * 100); 4 } 5 console.info(data.sort()); //升序 6 console.info(data.reverse()); //反转
对象数组也排序:
- 自定义排序的关键在于设计好排序比较函数。
- 排序是在原数组上进行的.
1 //定义一个Person构造函数 2 function Person(name, age) { 3 this.name = name; 4 this.age = age; 5 }; 6 //定义一个函数,用于输出Person集合中的数据 7 function printPeople(arr) { 8 for (var i = 0; i < arr.length; i++) { 9 console.info(arr[i].name + "有" + arr[i].age + "岁"); 10 } 11 }; 12 //使用forEach方法,以回调方式遍历处理数组中的元素 13 function printPeople2(arr) { 14 //forEach回调函数参数说明: 15 //value:代表数组中的单个元素 16 //index:代表数组中此元素对应的索引 17 //traversedObject:引用被遍历的数组 18 arr.forEach(function (value, index, traversedObject) { 19 console.info(value.name + "有" + value.age + "岁"); 20 }); 21 }; 22 //生成测试数据 23 var people = []; 24 for (var i = 1; i < 5; i++) { 25 var age = Math.floor(Math.random() * 100); 26 people[people.length] = new Person(‘用户‘ + i, age); 27 } 28 console.info("原始数组:"); 29 printPeople(people); 30 //自定义排序 31 //比较函数具有两个参数 a 和 b,其返回值如下: 32 //若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 33 //若 a 等于 b,则返回 0。a,b视为相等 34 //若 a 大于 b,则返回一个大于 0 的值。b应该排在a的后面 35 people.sort(function (p1, p2) { 36 if (p1.age > p2.age) return 1; 37 if (p1.age < p2.age) return -1; 38 return 0; 39 }); 40 console.info("排序后的数组:"); 41 printPeople2(people);
时间: 2024-11-05 17:18:32