JavaScript笔记4-数组

一.概述:

1.数组是无类型的:同一数组的各元素可以是任意类型,也可以是数组或对象;

2.索引从0开始,最大到2^32-2=4294967294;最多容纳4294967295个元素;

3.数组是动态的,根据需要自动增减;创建数组时无需声明大小,且在大小变化时无需重新分配空间;

4.数组可以是索引连续的(非稀疏数组),也可以是不连续的(稀疏数组),对于稀疏数组来说,length比所有元素的索引要大;

5.通常数组的实现是经过优化的,用数字索引来访问对象比访问常规对象属性要快的多.

二.创建数组

1.var empty = []; //名为empty的空数组

2.var primes = [1,2,3,4]; //4个元素的数组

3.var misc = [1.1, true, "a",];//包含3个类型和逗号的数组

4.

var base = 1;

var table = [base, base+1, base+2, base+3];//可以包含表达式

5.var b = [[1,{x:1,y:2}],[2,{x:3,y:4}]];//包含对象直接量或其它数组直接量

6.var count = [1, ,3];//第2个元素为undefined

7.var defs = [ , , ];//数组含2个元素,都是undefined,数组直接量的语法允许有可选的结尾的逗号,所以该数组只有2个元素;

8.var a = new Array();//调用Array()函数,无参,相当于创建空数组;

9.var a = new Array(10);//调用Array()函数,创建长度为10的函数;

10.var a = new Array(5,4,3,"testing, testing");//参数即为新数组的元素,即有4个元素,3个整型+1个字符串;

三.数组元素的添加/删除

1.为新索引赋值,即可添加,如a[2]=2;

2.push()方法在数组末尾添加,如a.push(2),该方式与a[a.length]一致

3.unshift()方法在数组首部添加,其它元素依次后移

4.delete删除数组元素,删除时数组长度不变,该位置不再有元素,非稀疏数组变成稀疏数组

如:a = [1,2,3]

delete a[1];

删除索引为1的元素之后,a.length=3; console.log(a[1])会返回undefined;该数组变为稀疏数组

四.数组遍历

1.常规for循环

var a =[1,2,3, null, ,];

delete a[1];

var len = a.length;

console.log(len);//5

for(var i = 0; i<a.length; i++){
     //跳过null/undefined以及不存在的元素
     // if(!a[i])
     //     continue;
     //console.log(a[i]);//1 3
     //跳过undefined和不存在的元素
     // if(a[i]===undefined)
     //     continue;
     //console.log(a[i]);//1 3 null
     //跳过不存在的元素
     if(!(i in a))
         continue;
     console.log(a[i]);//1 3 null

}

2.forEach

求以下数组各元素的平方和
     var a =[1,2,3, null, ,];
     delete a[1];
     var sq=0;
     a.forEach(function(x){
         sq += x*x;
     });
     console.log(sq);//1+9=10

五.多维数组

javaScript不支持真正的多维数组,可以用数组的数组来近似;

举例:模拟9*9乘法表

var table = new Array(10);

for(var i =0; i<table.length; i++){
     table[i] = new Array[10];

}

for(var row = 0; row < table.length; row++){
     for(var col=0;col<table[row].length;col++){
         table[row][col]=rol*col;
     }

}

console.log(table[5][7]);//35

六.数组方法

1.join():将数组元素拼接成一个字符串;返回最终形成的字符串,是String.split()的逆操作;数组没有split()方法.

2.reverse():将数组颠倒顺序,返回逆序数组.注意是修改原数组,而不是生成新数且;

3.sort():返回排序后的数组;
     1.不带参数时,以字母表顺序排序(如有必要将临时转为字符串比较);
     2.若包含undefined函数,会被排到数组的尾部;
     3.若自定义规则,需传入函数;假设第一个参数在前,应该返回一个小于0的数;
     举例1:
     var a = [33,4,1111,222];
     // a.sort();
     // console.log(a);//字母表顺序[1111, 222, 33, 4]
     // a.sort(function(x,y){
     //     return x-y;
     // });
     // console.log(a);//[4, 33, 222, 1111]
     a.sort(function(x,y){
         return y-x;
     })
     console.log(a);//[1111, 222, 33, 4]
    
     举例2:
     var b =[‘ant‘,‘Bug‘,‘cat‘,‘Dog‘];
     b.sort(function(x,y){
         var a = x.toLowerCase();
         var b = y.toLowerCase();
         if(a>b){
             return 1;
         }else if(a<b){
             return -1;
         }else{
             return 0;
         }
     })
     console.log(b);//["ant", "Bug", "cat", "Dog"]

4.concat():返回一个由原数组和该方法的参数组成的新数组;
     注意:1.参数若为数组,则连接数组中的元素,而非数组本身;
         2.不会递归扁平化数组的数组;
         3.不会修改调用的数组;
     举例:
     var a = [1,2,3];
     console.log(a.concat(4,5));//[1, 2, 3, 4, 5]
     console.log(a.concat([4,5]));//[1, 2, 3, 4, 5]
     console.log(a.concat([4,5],[6,7]));//[1, 2, 3, 4, 5, 6, 7]
     console.log(a.concat([4,5],[6,[7,8]]));//[1, 2, 3, 4, 5, 6, Array(2)]

5.splice():插入或删除元素的通用方法;根据参数不同有如下几种情况:
     1.只有一个参数:删除从这个参数开始(含)直到结尾的元素,并返回由删除元素组成的数组;
     如:var a = [1,2,3,4,5,6,7,8];
     console.log(a.splice(4));//[5,6,7,8]
     2.两个参数:第一个参数为起始位置,第二个参数为删除元素个数(长度),返回由删除元素组成的数组;
     如:var a = [1,2,3,4,5,6,7,8];
     console.log(a.splice(2,2));//[3,4]
     3.传入三个及以上参数:执行先删除,再插入功能.第一个参数指定开始删除及插入的位置,第二个参数为删除的长度,第三个及以后的参数作为数组元素插入;
     如:var a = [1,2,3,4,5,6,7,8];
     console.log(a.splice(2,3,[2,3],4));//[3, 4, 5]
     console.log(a);//[1, 2, Array(2), 4, 6, 7, 8]
     console.log(a.length);//7

6.push():在数组的尾部添加一个或多个元素(作为栈来使用),并返回新的数组长度;

pop():删除数组的最后一个元素,减少数组的长度(delete不会减少数组长度),并返回删除的值;该方法无参数,调用一次只删除一个元素;

注:两个方法都是修改并替换原有数组,而非生成新的数组

举例:

var a = [];

console.log(a.push(1,2,3));//返回数组长度3

console.log(a.pop());//返回删除的值3

console.log(a.pop());//2

console.log(a.length);//1

7.unshift():从数组头部添加元素;参数作为数组元素添加;

shifte():从数组头部删除一个元素,无参数;

举例:

var a = [9];

console.log(a.unshift(1,2,3));//在数组头部添加元素并返回数组长度4

console.log(a);//[1, 2, 3, 9]证明在头部添加

console.log(a.shift());//返回删除的元素1(从头部开始删除)

8.toString():将数组的每个元素转化为字符串并输出以逗号分隔的字符串列表;

toLocalString():使用本地化(和自定义实现的)分隔符将这些字符串连接成最终的字符串;

举例:

console.log([1,2].toString());//1,2

console.log([1,2].toLocaleString());//1,2

时间: 2024-12-28 23:54:37

JavaScript笔记4-数组的相关文章

JavaScript笔记之数组 keyword(存储和释放&amp;堆栈 &amp; 按值 引用)

1.数组创建及初始化       var obj=new Array();       var arr=[];       可以延伸为长度一定的,字面量定义数组 2.堆栈 按值传递 引用类型      数组是引用类型,不是值传递,      栈:系桶自动分配和释放 ,比如函数的参数.局部变量 先进后出 一级缓存      堆:一般由程序员分配释放,程序结束后系统回收 先进先出 二级缓存 3.关联数组和索引数组    关联数组即hash数组,本质上js底层,一切对象都是关联数组 所以以下写法能产生

JavaScript笔记之Function

一.函数定义 (1)使用function declaration 格式:function functionName(parameters) { function body } 注:此种方式声明的函数作用域是全局的,即在声明之前可以调用 (2)使用function expression 格式:var name = function (parameters) { function body }; 注:与(1)不同,在声明之前不可以调用 (3)使用function constructor() 格式:v

javascript笔记(二)

concat() 连接多个字符串,返回合并后的字符串. 1 var s1="a"; 2 var s2="b"; 3 var s3="c"; 4 5 console.log(s1.concat(s2,s3));//abc concat() 方法的结果等同于:result = s1 + s2 + ... + sN.如果有不是字符串的参数,则它们在连接之前将首先被转换为字符串. 数组中的concat():将参数添加为数组的元素,返回新的数组. 1 va

[Java基础笔记]数组

Java基础笔记 定义数组: int[] numbers = new int[100]; //方法一 double[] num = new double[10]; int[][] a = new int[2][5]; 通过new创建的数组,元素默认值为0(0.0) int[] scores = {5,4,33,12,46}; //方法二 int[][] a = { //位数不足,自动补0 {5,3,2,1,6}, {10,12,14,15}, }; 数组特性:存储的都是同类型数据:长度定义后不可

第一百零三节,JavaScript对象和数组

JavaScript对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起.它也常被称做为类,但ECMAScript中却没有这种东西.虽然ECMAScript是一门面向对象的语言,却不具备传统面向对象语言所支持的类和接口等基本结构. 一.Object对象类型 Object类型对象, 到目前为止,我们使用的引用类型最多的可能

javascript如何遍历数组中的每一个元素

javascript如何遍历数组中的每一个元素:遍历数组中的所有元素是一个非常基础简单的操作,可能初学者还不够了解,下面就通过代码实例介绍一下如何实现此功能.代码如下: var theArray=["蚂蚁部落","青岛市南区","新锐科技",3]; for(var index=0;index<theArray.length;index++) { console.log(theArray[index]); } 以上代码可以遍历数组中的每一个元

javascript如何获取数组中的最大值和最小值

javascript如何获取数组中的最大值和最小值:比较数组中数值的大小时比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,下面再来介绍一下其他比较常用的方法,代码如下: function getMaximin(arr,maximin) { if(maximin=="max") { return Math.max.apply(Math,arr); } else if(maximin=="min") { return Math.min.appl

JavaScript——引用类型之数组

前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原型链一起写.本博将介绍引用类型Array,即JavaScript中的数组. Array 首先数组到底是什么呢?数组是一段线性分配的内存,它能通过整数计算偏移并访问其中的元素.遗憾的是这个定义是指其他语言中的数组,JavaScript中并没有此类数据结构.作为替代,JavaScript中基于对象创建了

JavaScript中的数组的学习

JavaScript中的数组的学习 数组的长度可变,数组的长度等于所有元素索引+1 同一个数组中的元素类型可以互不相同 访问数组元素时不会产生数组越界,访问未被赋值的数组元素时该元素的值为undefined. <!DOCTYPE html> <html> <head> <script type="text/javascript"> var a = [3,5,23]; var b=[]; var c = new Array(); b[0]

javascript如何去掉数组中重复的值

javascript如何去掉数组中重复的值: 数组是用来组织数据的,有时候里面的数据是重复的,下面就介绍一下如何从数组中删除重复的内容. 代码实例如下: var theArray=[1,2,3,4,5,6,4,3,10]; function unique(data){ var data=data||[]; var a={}; for(var i=0;i<data.length;i++){ var v=data[i]; if(typeof(a[v])=='undefined'){ a[v]=1;