类数组(回顾)

  • 概念
  • 类数组属性扩展
  • 类数组转数组的5种方法
    • 1. Array.from
    • 2. ... 扩展运算符 + 迭代器
    • 3. Array.apply
    • 4. 利用循环
    • 5. slice

概念

具有索引属性,和 length属性的对象,如arguments

const arrLike = {0: 'a', 1:'b', length:2}

类数组属性扩展

类数组可以把数组对象的属性拼到一起,但数组要自己添加

var arrLike = { 0: 'a', 1: 'b', length:2, 'push':[].push };
console.log(arrLike.push('c'));//3
console.log(arrLike);//{0: 'a', 1: 'b', 2: 'c', length: 3, push: ƒ}

类数组转数组的5种方法

1. Array.from

var arrLike = {0: 'a', 1: 'b', a: 3, length: 2};
Array.from(arrLike);//['a','b']

2. … 扩展运算符 + 迭代器

注意:类数组本身没有迭代器 Iterator

var arrLike = { 0: 'a', 1: 'b', length:2, [Symbol.iterator]:[][Symbol.iterator] };
console.log([...arrLike]);//['a','b']

3. Array.apply

var arrLike = {0: 'a', 1: 'b', a: 3, length: 2};
console.log(Array.apply(null, arrLike)) //[ 'a', 'b' ]  调用数组类自身的apply方法

4. 利用循环

var arrLike = { 0: 'a', 1: 'b', length:2 };
var arr = []
for(let i =0;i<arrLike.length;i++){
    arr.push(arrLike[i])
}
console.log(arr);//['a','b']

5. slice

var arrLike = {0: 'a', 1: 'b', a: 3, length: 2};
console.log([].slice.call(arrLike)) //[ 'a', 'b' ]  调用数组原型上的slice方法

你可能感兴趣的:(#,js基础,javascript,前端)