js数组的定义和常用方法大全

174 阅读6分钟

数组的定义

1.字面量定义

var arr = [值1,值2,值3,...,值n]

2.构造函数定义

构造函数:
new Array() //空数组
var arr1 = new Array()
=> arr1 数组名 引用变量
=> new Array() 创建数组对象 var arr2 = new Array(100,200,300,400)
var arr3 = new Array(5) 只有一个参数时,表示数组存储元素个数
每个数组里面的值,我们称为元素,而每个元素都有对应的下标(索引号),从0开始移次排列。
数组也是一种线性表的数据结构\

arr.length 查看数组的长度,返回一个数值类型的数字

数组的常用方法

  • arr.push(元素) 在数组末尾增加一个元素
  • arr.unshift(元素) 在数组前增加一个元素
  • arr.pop() 删除末尾元素
  • arr.shift() 删除第一个元素
  • arr.splice(索引号,截取元素个数) 截取某段数组元素并删除
  • arr.reverse() 反转数组
  • arr.sort() 数组从大到小排序,将元素转换为字符串类型进行比较,默认从每个元素的第一个字符比较起
  • arr.concat() 数组拼接,将两个或多个数组拼接起来,返回一个新数组,不会改变原数组
  • slice() 从原数组中指定开始下标到结束下标之间的项组成为新数组,不会改变原数组
  • arr.indexOf(元素) 返回数组中指定元素的下标,元素不存在就返回-1
  • lastIndexOf(元素) 从最后一个元素开始查找,返回指定数组的元素下标,元素不存在就返回-1
  • arr.join() 将数组转为字符串,可以在()放字符作为分隔符,默认以逗号分隔

常用的数组遍历方法

item:元素 index:索引 arr:数组名
这三个都只是形参,可以自己修改,但建议就用这三个英文命名,清晰易辨别。
这三个形参可以不全写,写一个代表元素,两个代表元素和索引

  • forEach(function(item,index,arr){代码块}) 遍历数组
  • map(function(item,index,arr){代码块}) 遍历并返回一个新数组
  • filter(function(item,index,arr){代码块}) 将满足条件的元素筛选出来并返回一个新数组
  • find(function(item,index,arr){代码块}) 遍历查找,将满足条件的第一个元素返回为数值,找到第一个就跳出
  • every(function(item,index,arr){代码块}) 判断数组中元素是否所有都满足条件,是就返回true,有一个不符合就返回false
  • some(function(item,index,arr){代码块}) 判断数组中元素是否满足条件,有一个元素满足就返回true,否则false
  • reduce(function(变量,item,index){代码块},变量初始值) 有两个参数,变量数组,对数组元素累加求和
  • reduceRight(function(变量,item,index){代码块},变量初始值) 和reduce一样的效果,不过从最后一个元素开始累加。

各个方法的基本使用示例:

arr.push(元素) 在数组末尾增加一个元素

var arr = [1, 2, 3, 4, 5];
      arr.push(6);
      console.log(arr); //[1, 2, 3, 4, 5, 6]

arr.unshift(元素) 在数组前增加一个元素

var arr = [1, 2, 3, 4, 5];
      arr.unshift(0);
      console.log(arr); //[0, 1, 2, 3, 4, 5]

arr.pop() 删除末尾元素

      var arr = [1, 2, 3, 4, 5];
      arr.pop();
      console.log(arr); //[1, 2, 3, 4]

arr.shift() 删除第一个元素

      var arr = [1, 2, 3, 4, 5];
      arr.shift();
      console.log(arr); //[2, 3, 4, 5]

arr.splice(索引号,截取元素个数) 截取某段数组元素并删除

      var arr = [1, 2, 3, 4, 5];
      arr.splice(2, 2);
      console.log(arr); //[1, 2, 5]

arr.reverse() 反转数组

      var arr = [1, 2, 3, 4, 5];
      arr.reverse();
      console.log(arr); // [5, 4, 3, 2, 1]

arr.sort() 数组从大到小排序。该方法是先将每个元素的第一个字符进行比较,如果第一个字符一样,再比较第二个字符的大小

      var arr = [3, 1, 5, 2, 4];
      arr.sort();
      console.log(arr); //[1, 2, 3, 4, 5]
      var arr1 = [32, 9, 15, 3, 11];
      arr1.sort();
      console.log(arr1); //[11, 15, 3, 32, 9] 

arr.concat() 数组拼接,将两个或多个数组拼接起(可以是单个字符,也可以是数组),返回一个新数组,不会改变原数组。

      var arr = [1, 2, 3, 4, 5];
      var newArr = arr.concat(6, [7, 8, 9]);
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(newArr); //[1, 2, 3, 4, 5, 6, 7, 8, 9]

slice() 从原数组中指定开始下标到结束下标之间的项组成为新数组,不会改变原数组。左闭右开,不包括结束下标。

      var arr = [1, 2, 3, 4, 5];
      var newArr = arr.slice(1, 3);
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(newArr); //[2, 3]

arr.indexOf(元素) 返回数组中指定元素的下标,元素不存在就返回-1。找到第一个就会返回,不会继续查找。

      var arr = [1, 2, 3, 4, 4, 5];
      console.log(arr.indexOf(4)); //3
      console.log(arr.indexOf(6)); //-1

lastIndexOf(元素) 从最后一个元素开始查找,返回指定数组的元素下标,元素不存在就返回-1

      var arr = [1, 2, 3, 4, 4, 5];
      console.log(arr.lastIndexOf(4)); //4
      console.log(arr.lastIndexOf(6)); //-1

arr.join() 将数组转为字符串,可以在()放字符作为分隔符,默认以逗号分隔

      var arr = [1, 2, 3, 4, 4, 5];
      console.log(arr.join()); //1,2,3,4,4,5
      console.log(arr.join("-")); //1-2-3-4-4-5

遍历数组的常用方法

forEach(function(item,index,arr){代码块}) 遍历数组

      var arr = [1, 2, 3, 4, 5];
      arr.forEach(function (item, index, arr) {
        console.log(item); // 1 2 3 4 5
        console.log(index); // 0 1 2 3 4
        console.log(arr); //[1, 2, 3, 4, 5]
      });

map(function(item,index,arr){代码块}) 遍历并返回一个新数组

      var arr = [1, 2, 3, 4, 5];
      var newArr = arr.map(function (item, index, arr) {
        //如果下标大于1,对应的该元素自增1
        if (index > 1) {
          item++;
        }
        return item; //需要加return返回值
      });
      console.log(arr);    //[1, 2, 3, 4, 5]
      console.log(newArr); //[1, 2, 4, 5, 6]

filter(function(item,index,arr){代码块}) 将满足条件的元素筛选出来并返回一个新数组

      var arr = [1, 2, 3, 4, 5];
      var newArr = arr.filter(function (item, index, arr) {
        //如果下标大于1,对应的该元素自增1
        if (index > 1) {
          return item; //需要加return返回指定值
        }
      });
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(newArr); //[3, 4, 5]

find(function(item,index,arr){代码块}) 遍历查找,将满足条件的第一个元素返回为数值,找到第一个就跳出

      var arr = [1, 2, 3, 3, 4, 5];
      var newArr = arr.find(function (item, index, arr) {
        //返回元素等于3的下标
        if (item == 3) {
          return index; //需要加return返回指定值
        }
      });
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(newArr); //3

every(function(item,index,arr){代码块}) 判断数组中元素是否所有都满足条件,是就返回true,有一个不符合就返回false

      var arr = [1, 2, 3, 4, 5];
      var newArr = arr.every(function (item) {
        return item < 3;
      });
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(newArr); //false

some(function(item,index,arr){代码块}) 判断数组中元素是否满足条件,有一个元素满足就返回true,否则false

      var arr = [1, 2, 3, 4, 5];
      var newArr = arr.some(function (item) {
        return item < 3;
      });
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(newArr); //true

reduce(function(变量,item,index){代码块},变量初始值) 有两个参数,变量数组,对数组元素累加求和

      var arr = [1, 2, 3, 4, 5];
      var sum = arr.reduce(function (m, item) {
        return m + item;
      }, 0);
      console.log(arr); //[1, 2, 3, 4, 5]
      console.log(sum); //15