array

文章目录

数组基本

创建数组

  • 方法一 :字面量创建

    var arr = [1, 2, 3]

  • 方法二:对象定义

    var arr = new Array()

修改数组长度

  • 用 length 加长数组长度,多出来的值为 null
  • 用 length 减少数组长度之后,就算再变回原来的长度,原来的值也不在了,会变成 null

数组方法

  • 栈方法 和 队列方法

    1
    2
    3
    4
    5
    6
    7
    8
    // 栈方法
    var arr = []
    arr.push() // 将元素添加到最后面,返回新数组的 length
    arr.pop() // 删除数组最后的一个元素,返回删除的元素

    //队列方法
    arr.unshift() // 将元素添加到最前面,同样返回新数组的 length
    arr.shift() // 删除数组最前面的一个元素,返回删除的元素
  • 拼接数组

    1
    2
    3
    4
    5
    var arr1 = [2, 4],
    arr2 = [1, 3, 5]
    var arr3 = arr1.concat(arr2) // [2, 4, 1, 3, 5] 拼接数组元素, 返回一个连接后的新数组,**不会改变原数组**。
    var str = arr2.join('-') // 1-3-5 将数组转换成字符串,用 - 号连接,**不会改变原数组**
    var strArr = str.split('-', 2) // [1, 3] 将字符串按 - 号分割,转化成数组, 2 是要返回的数组长度
  • 数组反转

1
2
var arr = [1, 2, 3]
arr.reverse() // [3, 2, 1] **改变原数组**
  • 数组排序
1
2
3
4
5
6
7
8
// sort() **改变原数组**
var arr = [11,1,2,5,55,6]
arr.sort() // [1, 11, 2, 5, 55, 6] sort() 无参数时,返回的是按照 Unicode 大小从小到大排列后的数组
arr.sort(function(a, b){
return a - b
}) // 参数为函数, a , b 为前后两个元素, 返回值大于 0 两者换位,小于 0 ,保持两者不变。 return a - b 是从小到大排序 ,相当于
// if(a > b) return 1
// else return -1
  • 数组分割
1
2
3
4
5
6
7
8
9
10
// slice() **不改变原数组**
var arr = ['a', 'b', 'c', 'd']
var res1 = arr.slice(2) // ['c', 'd'] 从下标为 2 开始截取到最后
var res2 = arr.slice(1, 2) // ['b'] 从下标为 2 开始截取到下标为 3 之前
var res3 = arr.slice(-2) // ['c', 'd'] 返回倒数两个元素
var res4 = arr.slice(-2, 3) // ['c'] -2 表示倒数第二个元素的下标, 3 就表示下标为 3 ,所以返回 c 即 [2,3) 之间的元素
var res5 = arr.slice(-2,1) // []由于 -2 转化后等于 2, 2 比 1 大,无法取到值
var clone = arr.slice() // ['a', 'b', 'c', 'd'] 返回数组的浅拷贝 和slice(0) 一样
var str = '123'
var arrStr = Array.prototype.slice.call(str) //[1, 2, 3]
  • 数组查找
1
2
3
4
5
6
7
8
9
10
11
var arr = [1, 2, 3, 1]
arr.indexOf(1) // 0 查找第一个值为 1 的元素,如果找到就返回下标
arr.indexOf(5) // -1 如果找不到就返回 -1
arr.indexOf(1, 2) // 3 从下标为 2 开始寻找 值为 1 的值的下标
arr.lastIndexOf(1) // 3 从后往前查找第一个值为 1 的元素,如果找到就返回下标
arr.lastIndexOf(5) // -1 如果找不到就返回 -1
// 可以用 ~arr.indexOf(xx) 判断 如
var index = arr.indexOf(0) // -1
if (~index) { // -1 将返回 0 ,条件不成立, 其他值将返回 1,条件成立。 不要再用 index === -1 了!

}
  • 数组替换
1
2
3
// splice() **改变原数组**
var arr = ['a', 'b', 'c', 'd']
arr.splice(1, 3, '1', '2') // ['a', '1', '2'] 从下标为 1 的位置开始,删除 三个元素之后,逐个添加 '1','2'

题外相关 字符串方法

1
2
3
4
5
6
7
8
9
10
11
12
var str = 'Ab cdef'
var str2 = '12'
var str3 = '1,2,3'
// 这些方法都不会修改原字符串,都是返回新字符串
str.charAt(3) // 'c' 返回 下标为 3 的字符
str.charCodeAt(3) // 99 返回下标为 3 的字符的 Unicode 编码
str.concat(str2) // 'Ab cdef12' 连接字符串相当于 +
str.substr(0) //'Ab cdef' 返回字符串的拷贝 和 str.substr() 一样
str.substr(1,4) // 'b cd' 从下标为 1 开始,截取 4 位
str.toUpperCase() // 'AB CDEF' 把字符串转为大写
str.toLowerCase() // 'ab cdef' 把字符串转为小写
str3.split(",") // ['1', '2', '3'] 把字符串以 , 分隔后转为数组
分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理