js中的数组

2019-01-28  本文已影响0人  icaojinyu

1. 数组的本质

typeof [1, 2, 3] // "object"
let arr = [1,2,3,4]
arr['0'] // 1
arr[0] // 1

2. length属性

[].length = -1 // Uncaught RangeError: Invalid array length
[].length = 2**32 // Uncaught RangeError: Invalid array length
[].length = 'hello' // Uncaught RangeError: Invalid array length

----
let arr = [1,2,3]
arr['name'] = 'lewis'
arr // [1, 2, 3, name: "lewis"]
arr.length // 3

3. 数组的遍历

4. 数组的空位

let arr = [1,,3,]
arr.length // 3
arr[1] // undefined
delete arr[0] // true
arr[0] // undefined
arr.length // 3

----
var a = [, , ,]
a.forEach(function (x, i) {
  console.log(i + '. ' + x) // 不产生任何输出
})
for (var i in a) {
  console.log(i) // 不产生任何输出
}
Object.keys(a) // []

5. 类数组

var obj = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3
}
obj[0] // 'a'
obj[1] // 'b'
obj.length // 3
obj.push('d') // TypeError: obj.push is not a function
----
// arguments对象
function args() { return arguments }
var arrayLike = args('a', 'b')

arrayLike[0] // 'a'
arrayLike.length // 2
arrayLike instanceof Array // false

// DOM元素集
var elts = document.getElementsByTagName('h3')
elts.length // 3
elts instanceof Array // false

// 字符串
'abc'[1] // 'b'
'abc'.length // 3
'abc' instanceof Array // false

--- 

var arrLike = {
    0: 1,
    1: 3,
    2: 5,
    3: 7,
    4: 9,
    length: 5
  }

  console.log(arrLike)
  let arr = Array.from(arrLike)
  console.log(arr)
  let arr2 = Array.prototype.slice.call(arrLike)
  console.log(arr2)
  let arr3 = [...arrLike]
  console.log(arr3)

上一篇 下一篇

猜你喜欢

热点阅读