博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中的伪数组
阅读量:2073 次
发布时间:2019-04-29

本文共 937 字,大约阅读时间需要 3 分钟。

javascript中的伪数组

欢迎访问我的博客,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~

什么是伪数组

假如有这样一段代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   	
Document

去看控制台看看

伪数组

上图就是一个伪数组,长相很像数组,但是将他的原型_proto_打开看看,它没有数组的spliceconcatpop等方法

proto

特点

  1. 具有length属性
  2. 按索引方式存储数组
  3. 不具有数组的方法

将伪数组转化为真数组

可以通过call或者apply的方法,将伪数组转化为真数组

1 2
Array.prototype.slice.call(liArr.children) // Array.prototype.slice.apply(liArr.children)

真伪数组转换

原理

借用数组原型方法

1 2 3 4 5 6 7 8 9 10 11 12
var arr = Array.prototype.slice.call(liArr.children);  Array.prototype.forEach.call(liArr.children, function(v) {
// 循环liArr.children对象 }); // push // some // every // filter // map // ...

可以简化为

1 2
Array.prototype.slice.call(liArr.children) // 此时已经改变了 this 指向,使得 liArr.children 拥有了真数组的原型方法

总结

  1. 伪数组没有数组 Array.prototype 的属性值,类型是 Object ,而数组类型是 Array
  2. 数组是基于索引的实现, length 会自动更新,而对象是键值对
  3. 使用对象可以创建伪数组,伪数组可以利用call或者apply很方便的转化为真数组

转载地址:http://oxtmf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>