JavaScript我学之七数组

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

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

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

JavaScript我学之七数组的相关文章

总结目前为止JavaScript所学的知识点以及问题

目前为止JavaScript所学的知识点以及问题 第一章: 1.1 JavaScript的应用 1)  通过学习鼠标的事件:onclick(点击事件).onmouseover(鼠标放上).onmouseout(鼠标移走)来操作动画特效. 2)   通过学习JS语法控制页面元素CSS样式. JavaScript 能够直接写入 HTML 输出流中. JavaScript 能够对事件作出反应. JavaScript 能改变 HTML 元素的内容.样式. 1.2 JavaScript的特点 1)    

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

javascript根据索引删除数组的元素

javascript根据索引删除数组的元素:根据索引值删除数组元素,就是删除指定索引的数组元素,下面就通过代码实例简单介绍一下如何实现此功能.代码如下: var theArray=["蚂蚁部落",2,"青岛市南区","antzone"]; theArray.splice(2,1); console.log(theArray); 以上代码可以删除索引值为2的元素,也就是数组中的第三个元素.splice()函数可以参阅javascript的Array

javascript中的稀疏数组(sparse array)和密集数组

学习underscore.js数组相关API的时候,遇到了sparse array这个东西,以前没有接触过. 这里学习下什么是稀疏数组和密集数组. 什么是密集数组呢?在java和C语言中,数组是一片连续的存储空间,有着固定的长度.加入数组其实位置是address,长度为n,那么占用的存储空间是address[0],address[1],address[2].......address[n-1].即数组元素之间是紧密相连的,不存在空隙.如下的js代码创建的就是一个密集数组 var data = [

JavaScript基础知识梳理--数组

JavaScript基础知识梳理--数组 1.创建方法 空数组:var obj=new Array(); 指定长度数组: var obj=new Array( size ); 指定元素数组 :  var obj=new Array( 元素1,元素2,....): 单位数组:var obj=new Array[ 元素1,元素2,元素3,...,元素N]; 多维数组:var a=new Array( [数组1],[数组2],[数组3],...,[数组N] ); 2.基本操作 存取数组元素: 单维数组

javascript中字符串和数组的相互转换

javascript中字符串和数组的相互转换:字符串和数组的相互转换操作是非常的重要的,因为在实际编码过程中会经常用到,所以这是必须要掌握的知识点,当然这个知识点并不难,知道了就永远知道了,并不是那种需要充分实践才能够掌握的东西,下面就做一下简单的介绍.一.字符串转换为数组:此操作会用到split()函数,它能够以指定的字符作为分隔符,将字符串转换成一个数组,实例代码如下: var Str="abc-mng-zhang-mayi"; var newArray=Str.split(&qu

JavaScript中常见的数组操作函数及用法

昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下,这样方便大家准备参考.如果恰好你也在准备各种笔试,希望对你有所帮助.同时,也欢迎补充. 1.数组创建 创建数组应该是最简单的了,有用数组字面量创建和数组构造函数两种方法,见下: var array1 = new Array(); var array2 = []; 上面是创建数组的最常见的两种方法,其中第二种方法因为简单直观而被开发者推崇.其中,

JavaScript中的伪数组理解

看过jQuery源码的人都知道类数组对象,与我们熟知的arguments对象很像 构造一个类数组必须有两个条件 第一个条件:你必须给对象定义个splice方法,只要他是一个function就可以 第二个条件:就是赋值一个length属性,或者增加push,unshift,shift,pop其中任何一个方法,并且调用了一次. 当这两个条件同时满足那么当前的对象在控制台输出后跟数组的格式一模一样. 一般而言大部分都是这样构造一个类数组对象(jQuery就是这么干的).因为相比而言,这样更简洁,并且更