ES5 - 数组API详解(1)

数组基础


ECMAScript中的数组是可以存放任意数据类型值的集合,数组的元素可以是任意数据类型,数组的长度可以动态调整。有以下特性:

  • 每一项都可以保存任何类型的数据。
  • 数组的大小是可以动态调整。
  • 数组的length属性:可读可写,可以通过设置length的值从数组的末尾移除项或向数组中添加新项

数组创建

  • 字面量创建数组

    由一对包括元素的方括号"[]“表示,元素之间以逗号”,"隔开

    var names = ["terry","larry","tom"]
    var name = "name"
    // 可以接收任何类型的数据当做数组的元素
    var arr = [12,name,true,"larry",{},function(){},[],null];
    // 通过数组下标获取对应的数据
    console.log(arr,arr[2]);
    // 获取数组的长度
    console.log(arr.length);//arr.length
    
  • 构造函数创建数组

    通过Array构造函数来创建数组

    var names = new Array();   // 等价于 var names = []; 
    // 如果一个参数,并且是number类型的整数,则代表的是数组的长度。如果是number类型的小数,则报错。如果是其他类型,则当做数组元素放进去。
    //var arr = new Array(length); 创建一个长度为length的数组
    var names = new Array(3);  
    // 创建一个包含3个元素的数组 var arr = [undefined,undefined,undefined];
    //var ages = new Array(2.4);//Error: Invalid array length
    var ages = new Array("2.4");
    var names = new Array('terry')  //创建一个包含1个元素的数组,该元素的值为'terry'
    // 两个参数或者多个参数,当做数组元素放进去
    var names = new Array('terry','robin')//创建一个数组,数组中的元素使用实参初始化
    

数组访问

访问数组元素: 数组变量名[索引]

通过索引访问数组,数组的索引从0开始,数组的索引超过数组长度会访问到undefined值而不会报错。数组的长度通过length属性获取

//如果索引小于数组的长度,返回对应项的值
var arr = ["terry","larry","boss"];
arr[0] ;  //访问数组中第一个元素,返回值为terry
//如果索引大于等于数组的长度,返回undefined
var arr = ["terry","larry","boss"];
arr[10]   //undefined
//如果给索引大于等于数组的长度的位置设置了值,数组自动增加到该索引值加1的长度
var arr = ["terry","larry","boss"];
arr[3] ="jacky";  //添加元素,数组长度变为4
//注意!数组最多可以包含4 294 967 295个项

a) [index] 直接访问,索引可以超过索引范围,只不过访问的值为undefined
b) length-1=Max(index)
c) length+N 或 length-N 开辟新的内存空间 或 数组元素的删除

var arr = ["terry","larry","tom"]
// a.[index]
console.log(arr[0])    //"terry"
// b.length-1=Max(index)
arr[arr.length - 1]
// length+N length-N  并不是直接使用length加或减 而是设置新的长度
// 开辟新空间
arr.length = 4
//数组元素删除
arr.length = 2

// 数组的遍历:
// 普通的for循环、增强版for循环、while循环、do-while循环
var arr = [1,2,3];
for(var i=0;i<arr.length;i++){
  var item = arr[i];
}
for(var index in arr){
  var val = arr[index]
}

数组API


1. 数组序列化

toString() 在默认情况下都会以逗号分隔字符串的形式返回数组项

join() 使用指定的字符串用来分隔数组字符串

var arr = [1,5,2,8,10,{a:1}];
	console.log(arr);//[ 1, 5, 2, 8, 10, { a: 1 } ]
	console.log(arr.toString());//”1,5,2,8,10,[object Object]”
	console.log(arr.join(""));//”152810[object Object]”
	console.log(arr.join("-"));//”1-5-2-8-10-[object Object]”
	
	// 数组也可以使用序列化工具进行转换,并且,数组也存在深拷贝浅拷贝的现象,也可以使用序列化工具解决此问题
	var result = JSON.stringify(arr);
	console.log(result);//”[1,5,2,8,10,{"a":1}]”
	console.log(JSON.parse(result));//[ 1, 5, 2, 8, 10, { a: 1 } ]

2. 构造函数的方法

  • Array.isArray()

    用来判断某个变量是否是一个数组对象

  • Array.from()

    从类数组对象或者可迭代对象中创建一个新的数组实例。

    var myArr = Array.from("HUA");
    console.log(myArr);
    //输出结果为["H","U","A"]
    
  • Array.of()

    根据一组参数来创建新的数组实例,支持任意的参数数量和类型。

    Array.of(7);       // [7] 
    Array.of(1, 2, 3); // [1, 2, 3]
    

3. 栈与队列方法

  • Array.prototype.push()

    push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。(此方法改变数组的长度)

    语法:array.push(item1, item2, ..., itemX)

    在这里插入图片描述

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    // push()  添加元素到末尾  参数是要添加的元素 返回值是修改之后数组的长度【改变原数组】
    fruits.push("Kiwi")
    console.log(fruits);
    //fruits 结果输出:Banana,Orange,Apple,Mango,Kiwi
    
  • Array.prototype.pop()

    pop() 方法用于删除数组的最后一个元素并返回删除的元素。(此方法改变数组的长度)

    语法:array.pop()

    在这里插入图片描述

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.pop();
    console.log(fruits);
    //fruits 结果输出:Banana,Orange,Apple
    
  • Array.prototype.shift()

    shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。(此方法改变数组的长度)

    语法:array.shift()

    在这里插入图片描述

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.shift()
    console.log(fruits);
    //fruits结果输出:Orange,Apple,Mango
    
  • Array.prototype.unshift()

    unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。(该方法将改变数组的数目)

    语法:array.unshift(item1,item2, ..., itemX)

    在这里插入图片描述

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.unshift("Lemon","Pineapple");
    console.log(fruits)
    //fruits 将输出:Lemon,Pineapple,Banana,Orange,Apple,Mango
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值