博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript我学之七数组
阅读量:5094 次
发布时间:2019-06-13

本文共 4700 字,大约阅读时间需要 15 分钟。

 本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘。

数组是“多态数组" ,啥都可以放

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]); //one3         //调用放在数组中的函数4         console.info(arr[3](100, 200));//3005         //访问放在数组中数组6         console.info(arr[arr.length - 1].length);//37         //当读取没有内容的位置时,返回undefined8         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         //中间的值为undefined11         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); //996         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 , two3             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);

 

转载于:https://www.cnblogs.com/xiaoguanqiu/p/4715372.html

你可能感兴趣的文章
android学习笔记--AlarmManager
查看>>
Robot Framework 源码解析(1) - java入口点
查看>>
UOJ#33. 【UR #2】树上GCD 点分治 莫比乌斯反演
查看>>
wpf 依赖性属性
查看>>
Python基础-数据类型
查看>>
精彩博文收集目录索引(程序猿就是我)
查看>>
Linux常用命令
查看>>
Master选举原理
查看>>
Objective-C在ARC下结合GCD的单例模式和宏模版
查看>>
zuul入门(5)zuul 处理异常
查看>>
SpringBoot+Angular2 开发环境搭建
查看>>
C++编程--类与继承(3)
查看>>
nvl()函数和nvl2()函数
查看>>
蓝桥杯入门(一)
查看>>
[BZOJ 3995] [SDOI2015] 道路修建 【线段树维护连通性】
查看>>
nodejs中安装webpack的简单使用
查看>>
array_combine php一个比较偏门的数组函数
查看>>
js数字转换为float,取N个小数
查看>>
lr参数化取值规则总结
查看>>
RN的第一个API-----注册组件Appregistry
查看>>