JavaScript Array

1.1 数组

  • 数组是值的有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。
  • 数组是特殊的对象,所有的索引都是属性名,所有元素都是属性值。

1.2 创建数组

  • 数组字面量
	var myCars=["Saab","Volvo","BMW"];
  • 数组构造函数
	var a = new Array();

1.3 访问数组

  • 通过 [ ] 操作符来访问某个特定的元素。
  • 数组是特殊的对象,使用方括号来访问数组元素和使用方括号来访问对象的属性一样。
	var name = myCars[0];
  • 虽然数组元素可以看作是数组对象的属性,但下面这种写法是错误的,因为在JS中,以数字开头的属性不能用点号访问,必须用方括号。
	console.log(arr.0); // a syntax error

	renderer.3d.setTexture(model, 'character.png');     // 语法错误
	renderer['3d'].setTexture(model, 'character.png');  // √
  • 注意在3d那个例子中,引号是必须的。你也可以将数组的索引用引号引起来,比如 years[ 2 ] 可以写成 years [ ‘2’ ]。
  • years[ 2 ] 中的2会被JS解释器通过调用 toString 隐式转换成字符串。

1.4 数组长度

  • 每个数组都有一个 length 属性,就是这个属性使其区别于常规的 JavaScript 对象。
  • length 属性代表数组中元素的个数。

1.5 数组遍历

  • 改进的 for 。数组的长度只查询一次而非每次循环都要查询
	for(var i = 0,len = keys.length;i < len;i++){
	//循环体
	}
  • for - in
	for(var i in keys){
	//循环体
	}
  • forEach
	var fruits = ['Apple','Banana'];
	fruits.forEach(function(item,index,array){
		console.log(item,index);
	})

数组方法

  1. 创建数组
    • from( ) 将类数组结构转换为数组实例
    • of( )将一组参数转换为数组实例

  1. 迭代器方法
    • keys( ) 返回数组索引的迭代器
    • values( ) 返回数组元素的迭代器
    • entries( ) 返回索引/值对的迭代器

  1. 复制和填充方法
    • fill( ) 复制数组的部分或者全部元素
    • copyWithin( ) 复制数组部分元素用来替换部分元素

  1. 栈方法 (模仿数据结构–栈 后进先出的操作限制)
    • push( )插入元素到数组尾部,返回数组最新长度
    • pop( ) 弹出数组尾部元素,返回数组最新长度

  1. 队列方法(模仿数据结构–队列 先进先出的操作限制)
    • shift( ) 删除数组头部元素
    • unshift( ) 执行shift( ) 相反操作,即添加元素到数组头部

  1. 排序方法
    • reverse( ) 将数组反向排序
    • sort( ) 可接收一个比较函数用来确定正序还是逆序排序

  1. 操作方法
    • concat( ) 可在现有数组的基础上添加额外的参数构建新数组
    • slice( ) 可创建包含现有数组部分元素的新数组
    • splice( ) 可用来删除现有数组的部分元素,当删除参数设为0时可变为插入操作,当删除参数设为1时可变为替换操作

  1. 搜索方法

    • indexOf( ) 返回要查找元素的索引
    • lastIndexOf( ) 逆序查找元素的索引
    • find( ) 确定要查找的元素是否在数组里
    • findIndex( ) 返回第一个匹配元素的索引

  2. 迭代方法

    • every( )
    • filter( )
    • forEach( )
    • map( )
    • some( )

常见操作
  • push( ) 添加元素到数组的末尾
	fruits.push('Mango');
	// ["Strawberry", "Banana", "Mango"]
  • pop( ) 删除数组末尾的元素
	var last = fruits.pop(); // remove Orange (from the end)
	// last: "Orange"; fruits: ["Apple", "Banana"];
  • shift( ) 删除数组头部元素
	var first = fruits.shift(); // remove Apple from the front
	// first: "Apple"; fruits: ["Banana"];
  • unshift( ) 添加元素到数组的头部
	var newLength = fruits.unshift('Strawberry') // add to the front
	// ["Strawberry", "Banana"];
  • indexOf( ) 找出某个元素在数组中的索引
	fruits.push('Mango');
	// ["Strawberry", "Banana", "Mango"]
	var pos = fruits.indexOf('Banana');
	// 1
  • splice( ) 指定位置删除一个或多个元素

    • splice( ) 接收多个参数
    • 第一个参数指定了插入和(或)删除的起始位置
    • 第二个参数指定了应该删除的元素的个数
    • 如果忽略第二个参数则默认删除后面所有元素
    • 第三个参数开始指定了需要插入到数组的元素
	var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
	var removedItems = vegetables.splice(1, 2);
	console.log(vegetables);// ["Cabbage", "Carrot"] 
  • slice( ) 复制一个数组
	var shallowCopy = fruits.slice(); // this is how to make a copy
	// ["Strawberry", "Mango"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值