js 数组倒序_js数组的创建及数组方法的汇总

js基础------数组篇

一.数组的创建

1.使用Array构造函数创建

可以通过给构造函数传递该数组的数量,这个数量会自动转换为length属性的值

      // var arr = new Array(123)
       
      console.log(arr.length); //123
​
      console.log(arr); // [empty × 123] 即数组长度为123 但是内容为空
​
      arr[2] = '第三个哦';
​
      console.log(arr);   // [empty × 2, "第三个哦", empty × 120]```

给构造函数传递一个值也可以创建一个数组,但如果是数值的话效果如上,可以是其他类型的值

var arr = new Array('one')

console.log(arr); // ["one"]
       
var arrObj = new Array({ name: 'wala' })

console.log(arrObj); // [{name: "wala"}]

另外在使用Array构造函数时,可以省略new操作符

var arr = Array(123)
console.log(arr); // [empty × 123]

2.使用数组字面量[]创建

用字面量[] 创建数组,多项数组之间用 ',' 隔开

      var arr = []
      console.log(arr); // []
       
      var arrOne = [1, 2, 3, 4]
      console.log(arrOne); // [1, 2, 3, 4]
       
      var arrTwo = [1, 2,]
      console.log(arrTwo); // [1, 2] 
      console.log(arrTwo.length) // 2
       
      var arrThree = [, , , ,]
      console.log(arrThree); // [empty × 4]

二.数组的方法

1.push()

push()方法可以接受任意数量的参数,然后将他们逐个添加到数组末尾,并返回修改数组后的数组长度

    var arr = new Array()
      arr.push(123)
      arr.push({ name: '张三' })
      const count = arr.push('One', 'Two')
      console.log(count); // 4 即返回的是修改数组后的数组长度
      console.log(arr); // [123, {…}, "One", "Two"]

2.pop()

pop()方法 从数组末尾移除最后一项,减少数组的length值,会返回他移除的项

      var arrPop = new Array('张三', '李四', '王五', '赵六')
      const result = arrPop.pop()
      arrPop.pop('李四') // 在pop方法中传入参数并不会报错 但也没有任何效果
      console.log(arrPop); // ["张三", "李四", "王五"]
      console.log(result); // 赵六 pop()返回的是 它删除的那个数组的值

3.shift()

shift()方法与pop()相反,它是从数组前端开始删除,减少数组的length值,并返回它移除的项

      var arrShift = new Array('张三', '李四', '王五', '赵六')
      const result = arrShift.shift()
      console.log(arrShift); // ["李四", "王五", "赵六"]
      console.log(result); // 张三

4.unshift()

unshift()方法的用途则与shift相反,它是从前面添加项,并返回数组的长度

      var arrUnshift = new Array('张三', '李四', '王五', '赵六')
      const result = arrUnshift.unshift('刘大', '关二')
      console.log(arrUnshift); //  ["刘大", "关二", "张三", "李四", "王五", "赵六"]
      console.log(result); //6

5.reverse()

reverse()方法就是将数组进行倒序排列,会改变原数组,也会返回对数组进行操作后的结果

    var arrReverse = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        const result = arrReverse.reverse()
        console.log(arrReverse); // [9, 8, 7, 6, 5, 4, 3, 2, 1]
        console.log(result); // [9, 8, 7, 6, 5, 4, 3, 2, 1]

6.sort()

因为reverse()方法的局限性,sort()较为灵活

      1.单纯的使用sort()方法只能进行数组的升序排列,限制了sort()发挥空间
      var arrSort = [1, 2, 3, 4, 5, 9, 7, 5]
        arrSort.sort()
        console.log(arrSort); // [1, 2, 3, 4, 5, 5, 7, 9]

        var arrSort1 = [12, 45, , 45, 98, 74, 1, 65, 65, 65]
        arrSort1.sort()
        console.log(arrSort1); // [1, 12, 45, 45, 65, 65, 65, 74, 98, empty]
        //另外数组中未定义的项,排序下来时最大的

在sort()方法中可以传递一个函数作为参数,这个函数也接受两个参数;如果第一个参数应在第二个参数之前则返回一个负数,如果位置不需要改变则返回0,如果第一个参数应在第二参数之后则返回一个正数**

   var arr = [12, 45, 78, 96, 4]
升序:   arr.sort((a, b) => {
            return a - b
        })
        console.log(arr); // [4, 12, 45, 78, 96]

降序:   arr.sort((a, b) => {
            return b - a
        })
        console.log(arr); // [96, 78, 45, 12, 4]

对于较为复杂的排序,可以用判断,然后返回相应调换位置的数值的形式进行排序
var arr = [12, 45, 78, , 56, 78, 89, 96, 4]
        arr.sort((val1, val2) => {
            if (val1 > val2) {
                return 1
            } else if (val1 < val2) {
                return -1
            } else {
                return 0
            }
        })
console.log(arr); // [4, 12, 45, 56, 78, 78, 89, 96, empty]

7.concat()

concat()用于拼接两个数组,基于当前数组的所有项创建一个新数组,即不会影响原有的数组

        var arrOne = [1, 2, 4, 5, 6, 7]
        var arrTwo = ['one', 'two', 'three']
        var result = arrOne.concat(arrTwo)
        
        console.log(result); // [1, 2, 4, 5, 6, 7, "one", "two", "three"]
        console.log(arrOne); // [1, 2, 4, 5, 6, 7]
        console.log(arrTwo); // ["one", "two", "three"]

8.slice()

slice()方法是基于原数组的一项或多项创建一个新数组, 即不会影响原有的数组,可以接受一个或者两个参数,第三个参数开始以后的参数都没有意义,多了也不会报错

slice()方法接收两个参数,第一个参数为截取的起始索引,第二的参数为结束的索引(若第二个参数省略,则会默认截取到数组的末端)
 var arrSlice = [1, 2, 4, 5, 7, 8, 9]
        // var result = arrSlice.slice(2)
        // console.log(result); //  [4, 5, 7, 8, 9] (注:结果包括它截取的开始的数组项)
        var result1 = result.slice(1, 4)
        console.log(result1); // [5, 7, 8]
        console.log(arrSlice); // [1, 2, 4, 5, 7, 8, 9]

注:这里的两个参数都对应数组的索引,第二个参数并不是截取的个数,只是截取结束的数组结束位置

另外:第二个参数若是其他数值类型,或者说比一个索引值小,则会返回一个空数组
  var arrSlice = [1, 2, 4, 5, 7, 8, 9]
        // var result = arrSlice.slice(1, 0)
        var result1 = arrSlice.slice(1, 'one')
        // console.log(result); // []
        console.log(result1);

9.splice()

splice()可以对数组进行删除,替换,添加的操做;会影响原来的数组,返回值是删除的数组项

1.删除 : 可以删除任意数量项,只需要指定两个参数,第一个参数为起始位置,第二个参数为删除的个数

    var arrSplice = ["刘大", "关二", "张三", "李四", "王五", "赵六"]
    var result = arrSplice.splice(2, 3)
    console.log(arrSplice); //  ["刘大", "关二", "赵六"]
    console.log(result); //  ["张三", "李四", "王五"]

2.替换 :可以向指定位置插入任意数量的项,因为从第三个参数开始视为添加的项

     var arrSplice = ["刘大", "关二", "张三", "李四", "王五", "赵六"]
     var result = arrSplice.splice(1, 2, '陈狗蛋', '曾二狗')
     console.log(result); //["关二", "张三"]
     console.log(arrSplice); //  ["刘大", "陈狗蛋", "曾二狗", "李四", "王五", "赵六"]

3.添加 
        var arrSplice = ["刘大", "关二", "张三", "李四", "王五", "赵六"]
        var result = arrSplice.splice(1, 0, '陈狗蛋', '曾二狗')
        console.log(result); // []
	console.log(arrSplice); // ["刘大", "陈狗蛋", "曾二狗", "关二", "张三", "李四", "王五", "赵六"]

10.indexOf() ; lastIndexOf()

indexOf()用于查找数组项的索引,找到第一个后就会停止寻找,若没有找到则会返回-1(从前往后找);

而lastIndexOf()则是从后往前找,于indexOf用法相同

     var arr = [1, 2, 6, 3, 1, 5, 6, 7, 8, 9]
        const result = arr.indexOf(1)
        console.log(result);  // 0 
        const resultLast = arr.lastIndexOf(1)
        console.log(resultLast); // 4

11.Array.isArray(arr)

Array.isArray(arr)用于判断数值类型,是否为数组,返回Boolean类型的数值

  	var arr = [];
        const result = Array.isArray(arr)
        console.log(result); // true

12.every()

every()方法用于判断数组每一项是否都符合要求,若有一项不符合则会返回false,反之true;

并且当找到不符合条件的后,该方法就会停止遍历,返回false;在某些时候用every()方法能提高性能

   var arr = [1, 2, 5, 7, 8, 9, 10]
        const result = arr.every((item, index, array) => {
            console.log(item);  // 数组项的值 
            console.log(index); // 索引
            console.log(array); // 返回的是arr这个数组
            return item > 2
        })
        console.log(result); // false

13.some()

some()方法类似于ervey();但some()只要有一项符合要求则会返回true;都不符合要求时才会返回false.

并且当找到符合条件的后,该方法就会停止遍历,返回true ;在某些时候用some()方法能提高性能

    var arr = [1, 2, 5, 7, 8, 9, 10]
        const result = arr.some((item, index, array) => {
            console.log(item);  // 数组项的值 
            console.log(index); // 索引
            console.log(array); // 返回的是arr这个数组
            return item > 2
        })
        console.log(result); // true

14.forEach()

forEach()对数组进行遍历;这个方法没有返回值;不会对原数组进行修改;

它仅仅只是对数组中的每一项运行传入函数

        var arr = [1, 2, 5, 7, 8, 9, 10]
        const a = arr.forEach(function (item, index, array) {
            arr[index] = item * 2
        })
        console.log(arr); // [2, 4, 10, 14, 16, 18, 20]
        console.log(a); // undefined

15.map()

map()方法不会影响原数组,会返回一个新的数组

 	 var arr = [1, 2, 5, 7, 8, 9, 10]
        var result = arr.map((item, index, array) => item * 2)
        console.log(result); // [2, 4, 10, 14, 16, 18, 20]
        console.log(arr); //  [1, 2, 5, 7, 8, 9, 10]

16.filter()

filter()不会影响原数组,会返回过滤后的一个新的数组

       var arr = [1, 2, 5, 7, 8, 9, 10]
        var result = arr.filter((item, index, array) => item > 5)
        console.log(arr); // [1, 2, 5, 7, 8, 9, 10]
        console.log(result); // [7, 8, 9, 10]

17.reduce() ; reduceRight()

归并方法,用于计算数组的方法; 接收两个参数,

第一个参数为函数方法(函数方法又可以接收四个参数),第二个参数为计算的初始值

reduceRight()是从末端开始遍历,其他无reduce()无异

 var arr = [1, 2, 5, 7, 8, 9, 10]
        var result = arr.reduce((pre, cur, index, array) => {
            console.log(pre);  //第一次打印时  初始值 若没有设初始值,则刚开始的初始值为数组的第一项
            console.log(cur); // 为数组每一项的值
            // console.log(index);  // 索引
            console.log(array); // 原数组
            return pre + cur
        }, 50)
        console.log(result); // 92
注:cur是循环元素,每次运算return的值会存储在pre中,作为下一次运算的初始值

18.find()

find()不会影响原数组,用于查找符合条件的数组项,并返回符合条件的数组项;找到后就会终止遍历查找

     var arr = [{ name: '陈狗蛋' }, { name: '增二狗' }, { name: '赵傻蛋' }]
        var result = arr.find((item, index, array) => {
            // console.log(item);
            // console.log(index);
            // console.log(array);
            return item.name === '增二狗'
        })
        console.log(result); // {name: "增二狗"}
        console.log(arr);  // [{…}, {…}, {…}]

20.includes()

includes()用于判断数组中是否包含给定的值,返回一个布尔值

        var arr = ["刘大", "陈狗蛋", "曾二狗", "关二", "张三", "李四", "王五", "赵六"]
        var result = arr.includes('刘大')
        var result1 = arr.includes('赵啦啦')
        console.log(result); // true
        console.log(result1); // false

21.findIndex()

findIndex() 与indexOf()类似,返回的都是在数组中符合条件的项的索引,若找不到则返回-1;注意要retrun

   var arr = ["刘大", "陈狗蛋", "曾二狗", "关二", "张三", "李四", "王五", "赵六"]
        var result = arr.findIndex((item, index, array) => {
            console.log(item);
            return item == "李四"
        })
        console.log(result); // 5 

22.join()

join()用于对数组转换为字符串的拼接,而join()接受的参数则时数组项之间连接的符号;不影响原数组

  var arr = ["刘大", "陈狗蛋", "曾二狗", "关二", "张三", "李四", "王五", "赵六"]
  var result = arr.join('$')
  console.log(arr); // ["刘大", "陈狗蛋", "曾二狗", "关二", "张三", "李四", "王五", "赵六"]
  console.log(result); //  刘大$陈狗蛋$曾二狗$关二$张三$李四$王五$赵六
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值