数组

数组是个特殊的对象。

伪数组转为数组

var arr = Array.prototype.slice.call

类似数组的对象

典型的“类似数组的对象”是函数的arguments对象,以及大多数 DOM 元素集,还有字符串。

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

数组空位

使用delete命令删除一个数组成员,会形成空位,并且不会影响length属性。

var a = [1, , ,];
a[1] // undefined

空位就是数组没有这个元素,所以不会被遍历到,而undefined则表示数组有这个元素,值是undefined,所以遍历不会跳过。

for of 遍历数组

// 简单遍历
let iterable = [10, 20, 30];

for (let value of iterable) {
    value += 1;
    console.log(value);
}
// 11
// 21
// 31


// 迭代Map
let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let entry of iterable) {
  console.log(entry);
}
// ["a", 1]
// ["b", 2]
// ["c", 3]

for (let [key, value] of iterable) {
  console.log(value);
}
// 1
// 2
// 3

// 迭代set
let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {
  console.log(value);
}
// 1
// 2
// 3

// 还可以迭代String arguments 和 DOM(NodeList)

results matching ""

    No results matching ""