第七章 数组

数组
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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值