JavaScript Array 对象

创建数组

利用 new 创建数组

var arr = new Array() // 创建一个新的空数组
var arr = new Array(2) // 创建一个长度为2的数组
var arr = new Array(2, 3) // 创建一个含2,3两个元素的数组

利用数组字面量创建数组

// 1.使用数组字面量创建空的数组
var arr = []
// 2.使用数组字面量创建带初始值的数组
var arr = ['张三','李四','王五']

常用方法

检测是否为数组

var arr = []
var obj = {}
// 1. instanceof 运算符
arr instanceof Array // true
obj instanceof Array // false
// 2. Array.isArray(参数)
Array.isArray(arr) // true
Array.isArray(obj) // false

添加元素的方法

// 1. push() 在数组的末尾添加元素 返回值为新数组的长度
var arr = [1, 2, 3]
arr.push(4, 5) // 值为5 arr = [1, 2, 3, 4, 5]
// 2. unshift() 在数组的开头添加元素 返回值为新数组的长度
var arr = [1, 2, 3]
arr.unshift(4, 5) // 值为5 arr = [4, 5, 1, 2, 3]

删除元素的方法

// 1. pop() 删除数组的最后一个元素 返回值为删除的元素
var arr = [1, 2, 3]
arr.pop() // 值为3 arr = [1, 2]
// 2. shift() 删除数组的第一个元素 返回值为删除的元素
var arr = [1, 2, 3]
arr.shift() // 值为1 arr = [2, 3]

数组排序

// 1. reverse() 翻转数组
var arr = [1, 2, 3]
arr.reverse() // arr = [3, 2, 1]
// 2. sort() 数组排序
var arr = [3, 4, 7, 1]
arr.sort() // 个位数排序 arr = [1, 3, 4, 7]

var arr = [13, 4, 77, 1, 7]
arr.sort(function(a, b) {
    return a - b // 升序
    return b - a // 降序
}) // 多位数排序 arr = [1, 4, 7, 13, 77]

获取数组索引

// 1. indexOf() 返回第一个满足条件的数组元素的索引号
var arr = [1, 2, 2, 2, 3]
arr.indexOf(2) // 1
arr.indexOf(2,2) // 从第二个开始查找 2
// 2. lastIndexOf() 返回最后一个满足条件的数组元素的索引号
var arr = [1, 2, 2, 2, 3]
arr.lastIndexOf(2) // 3

// 查找不到时 返回值为-1

数组转换为字符串

// 1. toString() 将数组转为字符串
var arr = [1, 2, 3]
arr.toString() // 1,2,3
// 2. join(分隔符) 将数组转为字符串 默认分隔符为,
var arr = [1, 2, 3]
arr.join() // 1,2,3
arr.join('-') // 1-2-3
arr.join('&') // 1&2&3

常见操作

数组新增元素

// 1.新增数组元素 修改length长度
var arr = ['张三','李四','王五']
arr.length = 4
// 2.修改索引号 追加数组元素
arr[3] = '赵六'
console.log(arr) // arr = ['张三','李四','王五','赵六']

删除指定数组元素

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
var newArr = []
for (var i = 0; i < arr.length;i++) {
    if (arr[i] != 0 ) {
        newArr[newArr.length] = arr[i]
    }
}

反转数组

var arr = ['red', 'green', 'blue', 'pink', 'purple']
var newArr = []
for (var i = arr.length - 1; i >= 0; i--) {
    newArr[newArr.length] = arr[i]
}
console.log(newArr)

数组排序(冒泡排序)

var arr = [5, 4, 3, 2, 1]
var temp
for (var i = 0; i <= arr.length - 1; i++) {
    for (var j = 0; j <= arr.length - i - 1; j++) {
        if (arr[j] > arr[j+1]) {
            temp = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = temp
        }
    }
}

数组去重

// 核心算法:遍历旧数组,用就数组元素取查询新数组,如果该元素不在新数组中添加,反之则不添加
var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']
console.log(unique(arr)) // arr = ['c', 'a', 'z', 'x', 'b']
function unique(arr) {
    var newArr = []
    for (var i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) === -1 ){
            newArr.push(arr[i])
        }
    }
    return newArr
}