数组的常用方法

1.创建数组的两个基本方式

1
2
3
4
// 1. 使用Array构造函数
let person = new Array()
// 2. 使用字面量表示法
let person = ['name', 'age']

2. 判断是否为数组类型

1
2
3
4
5
6
7
8
9
// 1. 使用instanceof判断
let num = [1, 3, 5, 7]
console.log(num instanceof Array) // true
// 2. constructor 判断
console.log(num.constructor === Array) // true
// 3. 现获取内部的属性,返回一个字符串,再利用call,达到检测数组的目的,综合考虑推荐这种写法
console.log(Object.prototype.toString.call(num) === '[object Array]') // true
// 4. Array.isArray
console.log(Array.isArray(num)) // true

3. 数组中的常用方法(只列出常用的)

  1. push()
  2. pop()
  3. unshift()
  4. shift()
  5. splice()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    // push()方法可以接受任意参数,逐个添加到数组尾部,并返回添加后的数组长度,该数组也会修改原数组。
    let arr = [1]
    console.log(arr.push(2)) // arr => [1, 2]
    console.log(arr.push('three')) // arr => [1, 'three']
    console.log(arr.push({ a: 3 })) // arr => [1, { a: 3 }]
    console.log(arr.push([2, 3])) // arr => [1, [2, 3]]

    // pop() 从数组末尾移除最后一项,减少数组的长度,然后返回移除的项,并且会改变原来的数组
    let brow = ['Google', 'Baidu', '360']
    console.log(brow.pop()) // brow => ['Google', 'Baidu']

    // shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
    let arr = [1, 3, 5, 7]
    console.log(arr.shift()) // arr => [3, 5, 7]

    /*
    * splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
    * array.splice(start, deleteCount, item1,...itemX)
    * start :必须 指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始* 的第几位(从-1计数);若只使用start参数而不使用deleteCount、item,如:array.splice(start) ,表示删除[start,end]的* 元素。
    * deleteCount 可选 整数,表示要移除的数组元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如* 果 deleteCount 大于start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。
    * item1...itemX 可选要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。
    */
    let arr = [1, 2, 3, 4, 5, 6, 7]
    // 从第2位开始删除0个元素,插入“drum”
    arr.splice(2, 0, 'a') //arr => [1, 2, "a", 3, 4, 5, 6, 7]
    // 从第3位开始删除1个元素
    arr.splice(3, 1) //arr => [1, 2, 3, 5, 6, 7]
    // 从第2位开始删除1个元素,然后插入“temp”
    arr.splice(2, 1, 'temp') //arr => [1, 2, 'temp', 4, 5, 6, 7]
    // 从第0位开始删除2个元素,然后插入"a1","a2"和"a3"
    arr.splice(0, 2, 'a1', 'a2', 'a3') //arr => ['a1', 'a2', 'a3', 3, 4, 5, 6, 7]
    // 从第2位开始删除2个元素
    arr.splice(arr.length - 3, 2) // arr => [1, 2, 5, 6, 7]
    // 从第2位开始删除所有元素
    arr.splice(2) // arr => [1, 2]

4. 可能遇到的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 将数组中的数字相加求和
let arr = [1, 2, 3, 4, 5, 6, 7]
console.log(eval(arr.join('+')))

// 模拟后端返回的数据格式
let result = {
code: '200',
data: [
{
id: 123,
name: 'a1',
age: 25
},
{
id: 456,
name: 'a2',
age: 26
},
{
id: 789,
name: 'a3',
age: 27
}
]
}
// 判断后端返回数据中是否存在id为456的数据
const filter1 = function(id) {
let obj = []
const data = result.data
data.forEach((item) => {
let id = item.id
obj.push(id)
})
return obj.indexOf(id) > -1 ? true : false
}
filter1(456) // => true
filter1(4566) // => false
// 获取id为456的数据
const filterData = function (id) {
let obj = {}
const data = result.data
data.forEach((item) => {
let id = item.id
obj[id] = item
})
return obj[id] ? obj[id] : []
}
filterData(456) // => {id: 456, name: "a2", age: 26}
filterData(4566) // => []
坚持原创技术分享,您的支持将鼓励我继续创作!