创建数组
- var 数组名 = new Array();
也可以指定初始化数组长度new Array(3); 创建了一个长度为3 的数组,
多个数逗号隔开则类似于字面量创建 如new Array(2,3,4);创建了一个[2,3,4]数组
- var 数组名 = []; (字面量创建)
初始化:
var arr = [1,2,'xxx',true] 可以存放任意数据类型 输出arr[4] 打印 undefined
添加数组元素
-
arr.push('xxx'); 可以有多个元素 如 arr.push.('1',3,true,'xxx')
从数组最后面追加元素,且这个方法的返回值是 添加元素之后数组的长度
var array = ['red','green','blue','pink']
array.length = 6 // 直接修改长度,多出的没赋值的元素 为 empty
console.log(array);
console.log(array[4]); // 没赋值的empty元素 打印输出为undefined
array.push('skyblue') // 在最后一个元素empty之后加入进去
console.log(array);
array.push(12) // 可以添加任何类型的数据
console.log(array);
array.push(true)
console.log(array);
array[10] = 'test'
console.log(array);
结果:
-
arr.unshift('xxx')
在数组最前面加入元素,也可以添加多个,返回值是添加元素之后数组的长度 -
arr.splice arr.splice(0,0,数据) 从下标0添加一条数据,相当于从前面加。
删除数组元素
-
arr.pop() 没有参数,可以删除数组的最后一个元素(一次只能删除一个),返回值是删除的那个元素值
-
arr.shift() 没有参数,删除数组的第一个元素,返回值是删除的那个元素值
-
arr.splice(开始下标,删除多少个) 从开始下标删除指定个数的数据,因为第三个参数为空,相当于把指定下标和后面几个都替换成空,所以就相当于删除
排序
冒泡排序
var array = [2,0,6,1,77,0,52,0,25,7]
for (let i = 0; i < array.length-1; i++) {//最后一趟是没运行排序的,所以要-1
for (let j = 0; j < array.length-1-i; j++) {
if (array[j]>array[j+1]) {// 从小到大排序。 如果是 < ,则是从大到小排序
var t = array[j]
array[j] = array[j+1]
array[j+1] = t
}
}
}
趟数和比较次数是相反的,前面几趟比较次数多,后面几趟比较次数少
JS提供的数组排序方法sort()
array.sort(); 默认排序的是字符串!
array.sort(function(a,b){
/*a, b 表示数组中的一项,如果是数值,直接a b 相减计算可以,但是如果array数组中的每项都是对象,
则a和b分别是数组里面的对象,要按对象中的数值排序应该写成 a.数值属性 - b.数值属性 */
// return a - b ; 数值升序
return b - a ; // 数值降序
});
检验是否为数组
- 用instanceof
数组名xxx instanceof Array ; 如果是数组,返回true,否则返回false
- Array.isArray( 数组名xxx )
如果是数组,返回true,否则false
转换为字符串
array.toString(); 控制台打印输出的结果变成一个没有 [ ] 包裹的黑色字体字符串
array.join(' 指定分割字符 '); 可以用指定字符分割每个元素,最终转换为字符串
其他api
| 方法名 | 说明 | 返回值 |
|---|---|---|
| concat() | 连接两个或多个数组,不影响原数组 | 返回一个新的数组 |
| slice() | 数组截取slice(begin,end) | 返回被截取项目的新数组 |
filter:
数组.filter((数组的每一项)=>{
return 数组每一项经过一些比较/运算,得到的布尔值如果为true则保留这一项,false则删除这一项
})
可简写为如下箭头函数
数组.filter( 数组的每一项 =>{ ...运算(结果是布尔值)... })
filter函数所返回的结果是一个新的数组,不影响调用这个函数的原数组,所有可以把结果赋值给原数组达到修改原数组的效果
reduce:
数组.reduce((pre,数组每一项)=>{
return 数组每一项去运算 // 这里数组有多少项就循环执行多少次。pre是上一次循环执行后的返回值
},0) // 这个0是pre的初始值
reduce一般用于做统计