数组(Array)
一组相同类型或者不同类型的数据的集合。
数组的创建
内置构造函数创建数 - new Array
字面量创建一个数组 - [ ]
数组的索引及length属性
索引也叫做下标,是指一个数据在数组里面排在第几个的位置
数组的索引,系统默认从0开始对数组项进行编号,通过数组的索引获取数组项的值或者设置数组项的值。通过length属性可以获取数组的长度
length属性可以从数组的后面删除或者添加数组项
数据类型
基本类型:number string boolean null undefined
基本类型:存储在栈内存中
复杂类型(引用类型):object(对象)
引用类型:地址存放在栈内存中,值是存放在堆内存
检测数据类型:typeof
基本类型和引用类型的赋值
基本类型遵循值传递
引用类型遵循值传递,传递的是地址
for和for...in
for循环遍历数组
for循环无法遍历对象,因为对象是无序的,javascript引入了for...in循环,专门遍历对象
for...in遍历对象,最好不要去遍历数组
点操作符:访问对象的属性和方法的一种符号。点操作符后面只能跟字符串
[]操作符:访问对象的属性和方法的一种符号。中括号后面可以跟字符串和变量
对象的属性一定是字符串,系统会自动调用toString()进行转换
数组的方法
实例方法 栈:后进先出
push() 可以接收任意数量的参数,把它们逐个添
加到数组末尾,并返回修改后数组的长度。改变原数组。
pop() 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
队列方法:先进先出
unshift()方法能够在数组前面添加任意个项并返回新数组的长度。
shift() 方法能够移除数组中的第一个项并返回该项,同时将数组长度减 1。
重排序方法
reverse() 方法会反转数组项的顺序。
sort() 方法按字母表(unicode编码)升序排列数组项。
如果利用sort排序数字,需要添加一个比较函数作为参数
a-z 97-122
A-Z 65-90
0-9 48-57
返回数组
concat() 方法可以基于当前数组中的所有项创建一个新数组,参数可以是数组项或者数组
应用:快速排序,数组的扁平化。
slice() 方法它能够基于当前数组中的一或多个项创建一个新数组。可以接受一或两个参数(索引位置,不包括结束位置)。参一:起始位置,参二:结束位置,返回一个新数组,不改变原数组
splice() 方法,对数组进行删除、插入、替换,是最强大的数组方法,返回值是数组,改变原数组。参1:起始索引位置,参2:删除的长度,参数3开始:需要添加的数组项。
join()方法,将数组转换成对应的字符串。参数就是连接符。
indexOf/lastIndexOf(位置方法)
返回要查找的项在数组中的索引位置,没找到的情况下返回-1。
两个参数:参1要查找的数组项,参2(可选的)查找的起点位置的索引
迭代方法
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代
每一个方法有两个参数:参1是一个函数(回调函数) 参2(可选的) this指向
参1是一个函数(回调函数),这个回调函数又有三个参数(数组项的值(value),数组项的索引位置(index),数组本身(array))
every():对数组中的每一项运行给定的函数,如果该函数对数组的每一项都返回true,整个方法的结果就是true.
some():对数组中的每一项运行给定的函数,如果该函数对数组的任意一项返回true,结果就返回true
filter():对数组中的每一项运行给定的函数,返回该函数结果为true项组成的数组。(过滤)
map() : 返回一个新数组(满足条件布尔值),数组中的元素为原始数组原始数组调用函数处理后的值,不会改变原数组
forEach() : 用于调用数组的每个元素,并将元素传递给回调函数
归并方法
reduce() reduceRight()
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。每一次迭代得到的结果会作为下一次迭代的初始值
reduce() : 从数组的第一项开始,逐个遍历到最后
reduceRight() :从数组的最后一项开始,逐个遍历到第一项
方法包含两个参数:参1每一项执行的函数,参2 迭代的初始值(可选的)
每一项执行的函数里面包含四个参数(前一个值(prev),当前值(curr),数组项的索引(index),数组本身(array))
冒泡排序
相邻的元素两两比较,如果第一个数比第二个数大,交换位置,每一轮有一个数字排序好了。
选择排序
工作原理:每一次从待排序的数据中选出最小的一个元素,存放起始位置。直到全部排序完成。
var p={
_age:18,
get age(){
return this._age;
},
set age(val){
this._age=val;
}
}
p.age; // 18
p.age=20; // 20
p.age; // 20Object.assign() --- 合并对象