数组(Array)一些知识回顾

220 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

在开始之前,咱们先聊下数据类型:

Undefined Null Boolean Number String Symbol Object ****

简单类型(原始类型):Undefined、Null、Boolean、Number、 String 、Symbol

引用类型:Object。

[object Object]、[object Function]、 [object Array] 、[object Number]、[object Boolean]、[object String]、[object Arguments]、[object Error]、[object RegExp]、[object Data]

判断一个数据是否是数组类型

image.png

数组得一些api操作

arry.push()

把一个元素增加到数组的末尾,返回的值为新数组的长度arry.length

let arry = [2, 9, 5]
let returnValue = arry.push(4)
console.log(returnValue) // 4
console.log(arry) // [2, 9, 5, 4]
复制代码

arry.pop()

删除数组中最后一个元素,返回值为删除的元素,实例:

let arry = [2, 9, 5]
let returnValue = arry.pop()
console.log(returnValue) // 5
console.log(arry) // [2, 9]
复制代码

arry.unshift()

push方法类似,区别在于它是在数组的前面添加元素,返回值为新数组的长度arry.length,示例

let arry = [2, 9, 5]
let returnValue = arry.unshift(4)
console.log(returnValue) // 4
console.log(arry) // [4, 2, 9, 5]
复制代码

由此可知,使用pushshift组合可以实现数据的‘先进先出’当然也可以使用unshiftpop

arry.reverse()

把数组反向排序,这里要注意它会改变原来的数组,而不会创建新的数组,示例:

let arry = [2, 9, 5]
arry.reverse()
console.log(arry) // [ 5, 9, 2 ]
复制代码

arry.sort()

对数组进行排序,可接受参数,参数必须是函数,如果不没有参数 则是按照字符编码的顺序进行排序,示例:

let arry = [10, 5, 40, 1000]
console.log(arry.sort()) // [ 10, 1000, 40, 5 ]
复制代码

如果数字想要按大小排列,可写入参数:

let arr = [3, 1, 7]
console.log(arr.sort((a, b) => a - b)) // [ 1, 3, 7 ]
复制代码

arry.forEach(item, index)arry.map(item, index)

两者都是对数组遍历,index表示数组索引,不是必须的参数区别在于map方法会返回一个新的数组,示例:

let arry = [1, 5, 10, 15];
let arry1 = arry.map( x => x + 2);
console.log(arry1) // [ 3, 7, 12, 17 ]
复制代码

arry.some()

用于检测数组中的元素是否满足指定条件,参数也是函数如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。

let arry = [1, 5, 10, 15];
console.log(arry.some(item => item > 10)) // true
复制代码

arry.every()

用于检测数组中的所有元素是否满足指定条件,只有当数组中灭一个元素都满足条件时,表达式返回true , 否则返回false,示例:

let arry = [5, 10, 15];
console.log(arry.every(item => item > 2)) // true
复制代码

arry.filter()

它创建一个新的数组,原数组不变,新数组中的元素是通过检查指定数组中符合条件的所有元素,示例

let arry = [1, 5, 10, 15];
let arry1 = arry.filter(item => item > 5)
console.log(arry) // [ 1, 5, 10, 15 ]
console.log(arry1) // [ 10, 15 ]
复制代码

arry.join()

把数组元素合并为一个字符串,如果不带参数,默认用逗号分隔

let arry = [5, 10, 15];
console.log(arry.join()) // 5,10,15
// 添加参数
let arry = [5, 10, 15];
console.log(arry.join('.')) // 5.10.15
复制代码

arry.splice(index, hm, add)

它既可以删除特定的元素,也可以在特定位置增加元素,也可以删除增加同时搞定,index是起始位置,hm是要删除元素的个数,add是要增加的元素,上例子:

let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
myFish.splice(2, 0, 'drum') // hm为0 表示不删除任何元素
console.log(myFish) // [ 'angel', 'clown', 'drum', 'mandarin', 'sturgeon' ]
复制代码
let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
myFish.splice(2, 1, 'drum')
console.log(myFish)  // [ 'angel', 'clown', 'drum', 'sturgeon' ]
复制代码

arry.concat()

用于连接两个或多个数组,返回值为连接后的新数组,原数组不变,示例:

let arry1 = [1, 2, 3]
let arry2 = [4, 5, 6]
arry1.concat(arry2)
console.log(arry1.concat(arry2)) // [ 1, 2, 3, 4, 5, 6 ]

ES6的拓展

  • 扩展运算符(...):将一个数组转为用逗号分隔的参数序列

image.png

  • Array.of() 返回由所有参数值组成的数组

    定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。

    目的:Array.of() 出现的目的是为了解决上述构造器因参数个数不同,导致的行为有差异的问题。

        let a = Array.of(3, 11, 8); // [3,11,8]
        let a = Array.of(3); // [3]
    复制代码
    
  • Arrary.from() 将两类对象转为真正的数组

    定义:用于将两类对象转为真正的数组(不改变原对象,返回新的数组)。

    参数:

    第一个参数(必需):要转化为真正数组的对象。

    第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。

    第三个参数(可选): 用来绑定this。

        // 1. 对象拥有length属性
        let obj = {0: 'a', 1: 'b', 2:'c', length: 3};
        let arr = Array.from(obj); // ['a','b','c'];
        // 2. 部署了 Iterator接口的数据结构 比如:字符串、Set、NodeList对象
        let arr = Array.from('hello'); // ['h','e','l','l','o']
        let arr = Array.from(new Set(['a','b'])); // ['a','b']
    

    结尾

    马马虎虎的写了些,不是很全,欢迎大家指导,希望大家看完可以有所收获,喜欢的话,赶紧点波订阅加关注。谢谢!后面有时间会相应的出些前端技术知识,欢迎大家一起来探讨学习。本人是小白,还请各位大神莅临本章指导!