创建
var a = [1,2,3]
var a = Array()
增
push():在末尾增加一个元素
unshift():在首部增加一个元素
ES6: fill() 填充数组
参数:
第一个元素(必须): 要填充数组的值
第二个元素(可选): 填充的开始位置,默认值为0
第三个元素(可选):填充的结束位置,默认是为this.length
删
pop(): 删除末尾的元素
shift():删除第一个元素
delete:删除指定元素,但是数组长度
一个方法实现增删
splice()
- index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
- howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
- item1, …, itemX: 可选。向数组添加的新项目。
查
indexOf(): 查找数组是否存在某个元素,返回下标
lastIndexOf() :查找指定元素在数组中的最后一个位置
includes() :查找数组是否包含某个元素 返回布尔
find() :用于找出第一个符合条件的数组成员
遍历
1.forEach():
array.forEach(function(currentValue, index, arr), thisValue)
- currentValue(必须),数组当前元素的值
- index(可选), 当前元素的索引值
- arr(可选),数组对象本身
- 无法中途退出循环,只能用return退出本次回调,进行下一次回调。
- 它总是返回 undefined值,即使你return了一个值。
- ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。
keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。
for (let index of ['a', 'b'].keys()) {
console.log(index);
}
// 0
// 1
for (let elem of ['a', 'b'].values()) {
console.log(elem);
}
// 'a'
// 'b'
for (let [index, elem] of ['a', 'b'].entries()) {
console.log(index, elem);
}
// 0 "a"
// 1 "b"
排序
sort()
sort要正确排序必须配合一个排序函数
function arrySort(a,b) {
return a-b
}
颠倒顺序
reserse()
返回值为undefind
合并
1.[…arr1, …arr2, …arr3]
2.concat()
数组转字符串
1.join():用指定分隔符分割连接
let a= ['hello','world'];
let str=a.join(); // 'hello,world'
let str2=a.join('+'); // 'hello+world'
2.toString() 和join相同但是不能指定分隔符
字符串转数组
split()方法与join()方法正好相反
它有两个参数:
- separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
- howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
如果用 “” 中间没有分号,作为分隔符,每个字符都会被分割开
数组拷贝
1.const a2 = […a1];
2.深拷贝
- 利用concat
let arr = [1,2,3];
let arr2 = [].concat(arr);
- 利用JSON深拷贝
let obj = {
a:1,
b:2,
c:undefind,
fun:function () {
console.log("function")
}
};
let obj2 = JSON.parse(JOSN.Stringify(obj));
console.log(obj2);
//object:[a:1,b:2]
//用JSON拷贝会忽略undefined和function
数组降维
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
flat(1) 表示拉平一层,Infinity关键字可以将所有层拉平
filter()方法
filter方法可以实现数组的筛选
filter有三个参数:
element:数组中的元素
index:参数位置
array:数组本身
用法:
var a = [1,2,2, ,3,4,4,5];
// 只写一个参数则时element
var b = a.filter(function (num) {
return num && num.trim(); //trim()会去除字符串两端的空格
})
//最后会得到去除空格的字符串
var c = a.filter(function (num,index,array){
return array.indexOf(num) === index;
})
// 这样就可以巧妙的去除重复元素,原理是indexOf会返回元素第一次出现的位置,和index进行比较就可以得出是不是重复的
ES6的set数组去重方法
结果是返回一个新数组
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
let set = new Set(array);
console.log(set);
// => Set {1, 2, 3, 4, 5}