《数据结构与算法JavaScript描述》读书笔记--第二章-数组

1 JavaScript中对数组的定义

数组标准定义:一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。

JavaScript中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。这些数字在内部被转换为字符串类型,这是因为JavaScript对象中的属性名必须是字符串。数组在JavaScript中只是一种特殊的对象,所以效率上不如其他语言中的数组高。

2 使用数组

2.1 创建数组

var list = []
var list = [1, 2, 3, 4]
var list = new Array()
var list = new Array(1, 2, 3, 4)
var list = new Array(10)

推荐使用[]操作符,效率最高。

2.2 读写数组

使用[]操作符
var num = []
num[1] = 1
var n = num[1] // n 为1

2.3 由字符串生成数组

调用字符串对象的split()方法可生成数组。

2.4 对数组的整体性操作

1.浅复制:将一个数组赋给另外一个数组,弊端是当原引用修改了数组的值,另外一个引用也会感知到这个变化。
2.深复制:将原数组的每一个元素都复制一份到新数组中。

function copy(arr1, arr2) {
	for (var i = 0; i < arr2.length; i++) {
		arr1[i] = arr2[i]
	}
}

3 存取函数

JavaScript提供了一组用来访问数组元素的函数,叫做存取函数,这些函数返回目标数组的某种变体。

3.1 查找元素

indexOf()

3.2 数组的字符串表示

join()
toString()

3.3 由已有数组创建新数组

concat()
splice()
splice()方法从现有数组截取一个新数组。该方法的第一个参数是截取的起始索引,第二个参数是截取的长度。

4 可变函数

JavaScript拥有一组可变函数,使用它们,可以不必引用数组中的某个元素,就能改变数组内容。

4.1 为数组添加元素

push() 将元素添加到数组末尾
unshift() 将元素添加到数组开头
length属性
nums[nums.length] = 7

4.2 从数组中删除元素

pop() 删除数组末尾元素
shift() 删除数组第一个元素
pop()和shift()方法都将删掉的元素作为方法的返回值返回

4.3 从数组中间位置添加和删除元素

splice()
添加元素,需提供以下参数:
1.起始索引
2.需要删除的个数
3.想要添加进数组的元素

var nums = [1, 2, 3, 7, 8,9]
var newElements = [4,5,6]
nums.splice(3, 0, newElements) // [1, 2, 3, 4,5,6,7, 8,9]

var nums = [1, 2, 3, 7, 8,9]
nums.splice(3, 0,4,5,6) // [1, 2, 3, 4,5,6,7, 8,9]

4.4 为数组排序

reverse() 顺序翻转
sort() 如果元素为字符串类型,可使用本方法排序,否则需传入一个大小比较函数。

5 迭代器方法

迭代器方法是对数组中的每个元素应用一个函数,可以返回一个值、一组值或者一个新数组。

5.1 不生成新数组的迭代器方法

forEach() 接受函数为参数
every() 接受一个返回值为e布尔类型的函数,如果对于所有元素,该函数返回为true,则该方法返回true
some() 接受一个返回值为布尔类型的函数,如果其中只要有一个元素,该函数返回为true,则该方法返回true
reduce() 接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和数组中的后续元素调用改函数,直到数组中的最后一个元素,最后返回得到的累加值。可用于求和或者连成字符串等等。
reduceRight() reduce()是从左到右执行,reduceRight()是从右到左执行。

5.2 生成新数组的迭代方法

map()
filter()
map()与forEach()类似,返回一个新的数组
filter()与every()类似,返回一个新数组,只包含返回true的元素。

6 二维和多维数组

JavaScript只支持一维数组,但是通过在数组里保存数组元素的方式,可以轻松创建多维数组。

7 对象数组

包含对象的数组,数组的方法和熟悉对对象依然适用。

8 对象中的数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值