创建方法
-
var arr = [1,2,3]
字面量形式创建 -
var arr = new Array()
构造函数方法创建var arr = new Array(1,2,3)//arr == [1,2,3] var arr1 = new Array(3)//arr == [undefined*3] var arr2 = []; arr2[10] = 10; console.log(arr2)//[undefined*10,10] arr2.length==11
数组方法1
改变原数组
push
末尾添加,返回添加后的数组长度var arr = [1,2,3]; //传一个参数 arr.push(4); console.log(arr);//[1,2,3,4] //传多个参数 arr.push(5,6,7); console.log(arr);//[1,2,3,4,5,6,7]
pop
末尾刪除,返回被刪除的值unshift
首部添加,返回添加后的数组长度shift
首部删除,返回被刪除的值reverse
翻转,返回数组本身sort
数组排序,直接调用该方法按ASCII值排序
传回调函数时:- 必须写两个参数
- 看返回值
- 当返回值为负数时,那么前面的数放在前面
- 为正数时,后面的数在前
- 为零时,不动
var arr = [2,5,8,1,6,5,2,4]; arr.sort();//当成字符串从第一位的ASCII值开始比较的升序 arr.sort(function(a,b){ return a-b;//升序 //return Math.random()-0.5;//乱序 //return b-a;//降序 })
splice
截取数组,返回截取的那部分数组var arr = [1,2,3,4,5]; arr.splice(3,1,1,2); //第一个参数:开始截取位置的索引,为负数时加上数组长度 //第二个参数:截取的个数 //第三个及以上的参数:添加到截取的位置 console.log(arr)//[1,2,3,1,2,5]
不改变原数组
concat
拼接多个数组join
将数组拼接成字符串,参数为以什么字符拼接,不传参数按逗号拼接split
将字符串截成数组toString
将数组转成字符串slice
截取数组:不传参数全部截取,可传两个参数,开始截取位置和结束截取位置
方法重写
var arr = [1,2,3];
// 1.push
Array.prototype.push = function (){
for(var i = 0; i < arguments.length; i ++){
this[this.length] = arguments[i];
}
return this.length;
}
数组方法2
includes 数组中是否包含某元素
var arr = [1,2,3]; arr.includes(2)
from 将其他类型的数据转为数组
var str = "123456789"; Array.from(str);//["1", "2", "3", "4", "5", "6", "7", "8", "9"]
数组去重----hash
Array.prototype.unique = function () {
var temp = {},
arr = [],
len = this.length;
for(var i = 0;i < len; i ++){
var str = '';
str = this[i] + typeof(this[i]);
if(!temp[str]){
temp[str] = true;
arr.push(this[i])
}
}
return arr;
}
类数组
属性要为索引(数字)属性,必须有length
属性,最好加上push
var obj = {
'0' : 'a',
'1' : 'b',
'2' : 'c',
'length' : 3,
'push' : Array.prototype.push,
'splice' : Array.prototype.splice
}
// Array.prototype.push = function () {
// for (var i = 0; i < arguments.length; i++) {
// this[this.length] = arguments[i]
// this.length++;
// }
// return this.length;
// }
类数组转成数组的方法
<p></p>
var obj = {
'0' : 'a',
'1' : 'b',
'2' : 'c',
'length' : 3,
'push' : Array.prototype.push,
'splice' : Array.prototype.splice
}
//slice 方法
var arr = [].slice.call(obj);//[''a,'b','c']
//from 方法
var arr = Array.from(obj);//[''a,'b','c']
// ... 方法
var arr = [...obj];//object is not iterable 对象不可编辑
var pTag = document.getElementsByTagName("p");
var arr = [...pTag];//[p]
es6 中的方法
findIndex 返回目标的索引值,没有则为-1
var arr = [1,2,3,4]; var val = 1; var index = arr.findIndex(function(value){ return value === val; })
reduce
var arr = [['姓名','张三'],['性别','男']]; var obj= {}; arr.reduce(function (pre,cur,index) { //引用类型,不需要找一个变量接收 pre[cur[0]] = cur[1]; return pre; },obj) console.log(obj);//{姓名: "张三", 性别: "男"} var arr = [1,2,3,4,5]; var sum = 0; sum = arr.reduce(function (pre,cur,index) { return pre += cur; },sum) console.log(sum);
filter
var arr = [1,2,3,4,5,6]; arr.filter(function(ele){ return ele > 5; }) console.log(arr);//[6]