js数组

一:数组的声明

(1) 构造函数声明数组:
  let arr = new Array();  //构造函数声明数组
  arr[0] = '侯宝文';
  console.log(arr);   // ["侯宝文"]
  console.log(arr.__proto__);  //构造函数的原型对象(可以看到内置的API)
  console.log(Array.prototype);   //构造函数的原型对象(可以看到内置的API)
  console.log(Array.prototype === arr.__proto__); // true

(2)常规声明
  let arr1 = ["侯宝文","李华"];
  arr1[2] = "小红";
  console.log(arr1);  //["侯宝文", "李华", "小红"]


二:往数组的原型上添加自定义方法
 
let arr = new Array("侯宝文");
  Array.prototype.sayHello =  function() {
      console.log(this); //this指向调用该方法的数组实例对象
      console.log('Hello' + this[0])
  };
  arr.sayHello(); // Hello 侯宝文


三:数组常规API
  
    let arr = new Array("侯宝文");
  
  (1) push 往数组的尾部添加元素,原数组改变,返回数组的长度
 
    console.log(arr.push("大炮"));    // 2
    console.log(arr);    // ["侯宝文", "大炮"]
  
  (2) pop 删除数组尾部的一项,原数组改变,返回删除的项

    console.log(arr.pop()); // 大炮
    console.log(arr); // ["侯宝文"]
  
  (3) unshift 往数组的头部添加元素,原数组改变,返回数组的长度

     console.log(arr.unshift('天天'));
    console.log(arr);
  
  (4) shift 删除数组头部的一项,原数组改变,返回删除的项

    console.log(arr.shift());
    console.log(arr);
  
  (5) splice 数组的删除和插入,返回的是删除的元素所组成的数组,原数组改变。
    console.log(arr.splice(0, 1,'ccc')); //['侯宝文']  从数组的下标0开始删除1项,并把'ccc'放到数组下标0的位置。
    console.log(arr); //['ccc']
  
  (6) slice 从指定的数组起始下标到结束下标(左闭右开),截取数组,原数组不变,返回截取的数组。

    console.log(arr.slice(0, 1));   //["侯宝文"]
    console.log(arr);   //["侯宝文"]
  
  (7) join 将数组的每一项以指定的字符拼接成字符串,并返回此字符串,原数组不变。
    arr.push('666');
    console.log(arr.join('+')); // 侯宝文 + 666
    console.log(arr); // ["侯宝文", "666"]
  
  (8) concat 拼接两个数组,原数组不变
 
    let arr1 = ['小红','李明'];
    console.log(arr.concat(arr1));  //["侯宝文", "小红", "李明"]
  
  (9) indexOf从前往后找,返回找到的第一个项的下标。lastIndexOf:从后往前找

    arr = [1,2,3,3,2,1];
    console.log(arr.indexOf(3)); // 2
    console.log(arr.lastIndexOf(3)); // 3
  
  (10) isArray 判断对象是否为数组

    let json = {age:23};
    console.log(arr.__proto__.constructor.isArray(arr)); // true
    console.log(Array.isArray(json)); //false

四:数组的排序

   sort排序
let arr = [2,5,3,11,8,9,14,4,19];
    let arr1 = [2,5,3,11,8,9,14,4,19];
    function compare(a,b){ // 从小到大
        return a-b
    }
    function compare1(a,b){ // 从大到小
        return b-a
    }
    arr.sort(compare);
    arr1.sort(compare1);
    console.log(arr);   //[2, 3, 4, 5, 8, 9, 11, 14, 19]
    console.log(arr1);  //[19, 14, 11, 9, 8, 5, 4, 3, 2]
 
五:数组的迭代
  (1) map  把处理的每一项的返回值放到一个新数组,并返回处理后的新数组。
let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
    let arr1 = arr.map((item, index) => {
        return item + 1;
    });
    console.log(arr);   // [1, 2, 3, 4, 5, 9, 14, 16, 19]
    console.log(arr1);  // [2, 3, 4, 5, 6, 10, 15, 17, 20]

  
(2)some  遍历数组,在回调函数里进行条件的判断,当有一个元素满足条件时就停止遍历并返回true;当全部的元素都不满足要求时,返回false
let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
    let arr1 = arr.some((item, index) => {
        return item > 100;
    });
    console.log(arr);   // [1, 2, 3, 4, 5, 9, 14, 16, 19]
    console.log(arr1);  // false
  
  (3) every  遍历数组,同上。当有一个元素不满足条件时就停止遍历并返回false;当全部元素都满足时,返回true;

let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
    let arr1 = arr.every((item, index) => {
        return item > 0;
    });
    console.log(arr);   // [1, 2, 3, 4, 5, 9, 14, 16, 19]
    console.log(arr1);  // true
  
  (4)filter 将符合条件的元素筛选出来返回一个新的数组

let arr = [1, 2, 3, 4, 5, 9, 14, 16, 19];
    let arr1 = arr.filter((item, index) => {
        return item % 2 === 0;
    });
    console.log(arr);   // [1, 2, 3, 4, 5, 9, 14, 16, 19]
    console.log(arr1);  // [2, 4, 14, 16]
  
  (5)reduce 一开始res是数组的第一项,value是数组的第二项,回调函数的返回值会赋给res.

let arr = [1, 2, 3, 4, 5];
    let arr1 = arr.reduce((res, value) => {
        return res + value;
    });
    console.log(arr1);  // 15

 


 

 
 




 


 

posted @ 2019-12-09 15:24  be_win  阅读(253)  评论(0)    收藏  举报