数组
js数组可以存放任何类数据类型
书写方法
//定义式
var arr1 = new Array();
var arr2 = new Array(3);//创建一个长度为3的数组
var arr3 = new Array(1,2,3);//创建一个内容为1,2,3的数组
//表达式
var arr = [];//推荐写法
数组是什么数据类型
数组是object类型
数组和类数组
var arr[];
alert(typeof arr);//object
var boxs = document.getElementsByClassName("box");
alert(typeod boxs);//object
数组和类数组都属于object
数组中的方法类数组无法使用
有共同的length属性
如何将类数组转成数组(可以使用数组的方法)
var zhenjiangBox = document.getElementsByClassName("zhenjiang");//类数组
//方式一:将类数组中每个元素放到数组中
var arr = [];
for(var i=0;i<zhenjiangBox.length;i++){
arr.push(zhenjiangBox[i]);
}
//方法二:
var arr = [].slice.call(zhenjiangBox);
console.log(arr.length);
//方法三:
var arr = Array.from(zhenjiangBox);
console.log(arr.length);
//方法四:
var arr = [...zhenjiangBox];
console.log(arr.length);
如何判读是否为数组
Array.isArray();//存在兼容问题
(arr instanceof Array)
长度锁定
var arr = [];
arr[2] = 2;
console.log(arr[0]);//undefined
console.log(arr[1]);//undefined
console.log(arr[2]);//2
console.log(arr.length);//3
//当数组给某一个特定位赋值 前几位以undefined填充 此时长度锁定
数组常见方法
push();//添加元素 放在数组末尾 返回添加项
unshift();//添加元素 放在数组开头 返回添加项
pop();删除元素 从数组后面删 返回删除项
shift();删除元素 从数组前面删 返回删除项
以上方法会改变数组长度
删除数组 arr = null;
slice()复制数组 slice(n,m)//不改变原数组
reverse()反转 改变原数组
join()按照何种方式进行拼接 返回字符串
//字符串反转
var str = 'I Love you';
console.log(str.split('').reverse().join(''));
splice()//剪切
var arr =[1,2,3,4,5,6];
//arr.splice(start: int, deleteCount: int, items...: any)
//索引 删除个数 任意项替代
arr.splice(2, 2, 7,8,9);//从索引为2开始剪切2个,用7,8,9进行填充。
console.log(arr);//[1,2,7,8,9,5,6]
concat()//连接数组 可对多维数组降低维度
var arr = [[1,2],[3,4],[5,6]];
console.log(arr[0][1]);//二维数组
function lower(arr){
var arrNew = [];
for(var i=0;i<arr.length;i++){
arrNew = arrNew.concat(arr[i]);
}
return arrNew;
}
var newArr = lower(arr);
console.log(newArr);//[1,2,3,4,5,6]
var arr = [1,2,3,4,5,6,7,8];
//find函数参数为函数fn()
var find = arr.find(function(item,index,array){
console.log(item+"----"+index+"----"+array);
//item 当前项 index 当前索引 array 当前数组
/* 1----0----1,2,3,4,5,6,7,8
2----1----1,2,3,4,5,6,7,8
3----2----1,2,3,4,5,6,7,8
4----3----1,2,3,4,5,6,7,8
5----4----1,2,3,4,5,6,7,8
6----5----1,2,3,4,5,6,7,8
7----6----1,2,3,4,5,6,7,8
8----7----1,2,3,4,5,6,7,8*/
});
console.log(arr.indexOf(3));//返回该索引值的数组元素 存在兼容问题
var arr = [1,2,3,4,5,6,7,8];
var findIndex = arr.findIndex(function(item,index,array){
console.log(item+"----"+index+"----"+array);
});
var arr = [1,2,3,4,5,6,7,8];
var forEach = arr.forEach(function(item,index,array){
console.log(item+"----"+index+"----"+array);
});
var arr = [1,2,3,4,5,6,7,8];
var filter = arr.filter(function(item,index,array){
console.log(item+"----"+index+"----"+array);
});
var arr = [1,4,3,4,7,6,7,8];
arr.sort(function(a,b){
return a-b;
});
console.log(arr);//[1, 3, 4, 4, 6, 7, 7, 8]
var arr =[1,2,3,4];
var res = arr.map(function(item,index,array){
//自带遍历效果
});
JS函数自执行时,this指向的是window.
var arr = [1,2,3,4];
var str = 'HELLO WORLD';
var res = arr.map.call(str,function(item){
return item.charCodeAt();
});
reduce 迭代:将第一次迭代的结果作为第二次迭代的开始
reduce(function,initval);函数和初始值为参数
而function 中参数(pre,cur,curIndex,array)前一项,当前项,当前项索引,当前数组
当初始值initval不为空时,第一次迭代的前一项为初始值。
var arr = [1,4,3,4,7,6,7,8];
var res = arr.map(function(item){
return item + 1+'';
}).reduce(function(pre,cur){
return pre + cur;
});
console.log(res);