类数组和数组的区别与转换

╰+哭是因爲堅強的太久メ 2022-11-05 13:52 311阅读 0赞

类数组定义

  1. 任何可迭代的结构,或者拥有length属性,其他属性(索引)为非负整数
  2. 不具有数组所具有的方法
  3. 元素属性名必须是数值或者可转换为数值的字符

对象中的索引会被当做字符串来处理

常见的类数组

  • arguments对象
  • DOM方法的返回结果,比如document.getElementsByClassName()
  • jQuery对象,比如$("div")

类数组和数组的区别和联系

相同点:

  • 都可用下标索引访问每个元素
  • 都有length属性

不同点:

  • 数组对象类型为Array,遍历数组可以用for...in..for循环
  • 类数组对象类型为Object,遍历类数组只能用for循环

类数组转换为数组

因为类数组不具有数组所具有的API,所以更常用的是将类数组转换为数组

Array.prototype.slice.call(arguments)

该方法是将arguments对象转换为数组的写法

  1. function list() {
  2. return Array..prototype.slice.call(arguments);
  3. }
  4. var li = list(1,2,3,4);
  5. console.log(li);
  6. //[1,2,3,4]

Array.from()

该方法ES6新增的方法,它可以将类数组对象和可遍历对象转为数组

  1. console.log(Array.from('star'));
  2. //['s','t','a','r']

Array.of()

该方法也是ES6新增的Array构造函数,用于将参数中所有值作为元素形成数组

  1. console.log(Array.of(1,2,3,4));
  2. //[1,2,3,4]

扩展运算符

扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中,这里参数对象是个数组,数组里面的所有对象都是基础数据类型,将所有基础数据类型重新拷贝到新的数组中。

  1. let arr = [1, 2],
  2. arr1 = [...arr];
  3. console.log(arr1); // [1, 2]

遍历类数组

类数组本身虽然不是数组,但是有interator接口,所以可遍历。

  1. <div></div>
  2. <div></div>
  3. <div></div>
  4. <script> let list = document.querySelectorAll('div') let divArr = []; for (let i of arr1) { divArr.push(item) } </script>

页面有三个div,list是一个nodeList,即元素集合,并非纯数组,可以用let of遍历。然后依次放入一个空数组。这样divArr就是div元素集合的数组。

发表评论

表情:
评论列表 (有 0 条评论,311人围观)

还没有评论,来说两句吧...

相关阅读

    相关 指针和数区别

    指针和数组的区别: 1.空间分配:数组是静态分配,且分配的空间是连续的;指针是动态分配,分配的空间不一定是连续的。 2.安全性:使用数组可能会造成数组越界;指针使用时可能会

    相关 集合和数相互转换

    集合和数组相互转换 很多时候API的方法只支持集合或数组,比如适配器类中的数据只支持集合,这时候我们就要把数组转换集合。 集合转换成数组 可以把String换成其

    相关 链表和数区别

    链表和数组一样是一种数据结构。 数组是将元素在内存中连续存放,由于每个元素占用内存相同,所以可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要