网站首页 > 技术文章 正文
在JavaScript中实现负索引
分析
首先看一下example
第一直觉是可以直接返回一个固定的object, 比如这样{0:1, 1:2, 2:3, -1:3, -2:2, -3:1}。但是这样搞数据是死的,下面的题目要求很难实现。
我们可以用getter/setter来完成和原来数组的数据同步,比如这样:
但是除了-1,还有-2, -3, ...-originalArr.length. 当数组length变化的时候得同步更新这些property。不是不可能,但是比较痛苦
救世主 Proxy
从题目的example可以看出,我们需要的实际上是一个“代理”一样的东西
- 所有数据的存取都是在原来的数组进行
- 只是在index是负数的时候,我们稍微改动一下存取的对象
首先我们写一个最基本proxy:
这个Proxy完全proxy到原数组,啥也不做。所以测试用例中的non-negative index的部分实际上还能通过。
处理负索引
get 中的prop不是number,我们parse一下,然后转换为正确的index就ok了
not iterable!
啊, [...arr] 测试没通过。
[...arr] 实际上调用的是目标的 Symbol.Iterator 方法,因为我们的proxy不拥有数组,我们需要把这个调用代理到原数组上。这时候可以用 Function.prototype.bind() 达到目的。
通过!撒花!
如果你现在也想学习前端开发技术,在学习前端的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以加入到我的Q群中:前114中6649后671,里面有许多前端学习资料以及2020大厂面试真题 点赞、评论、转发 即可免费获取,希望能够对你们有所帮助。
猜你喜欢
- 2024-11-22 【每日一题】数量刷题开始啦
- 2024-11-22 前端面试第二天
- 2024-11-22 前端面试总结
- 2024-11-22 「offerMe——刷题必备」java如何实现开根号的运算
- 2024-11-22 耗时7天我终于把LeetCode刷通关:数组十七连,真是不简单
- 2024-11-22 前端小姐姐的大厂面试过程复盘(微信/阿里/头条,附答案篇)
- 2024-11-22 大厂面试必刷题之“接雨水”
- 2024-11-22 刷 leetcode,进字节、阿里等一线大厂,刷题之前一定先打好基础
- 2024-11-22 作为前端开发者,你都经历过怎样的面试?
- 2024-11-22 被逼无奈学了几个mysql命令,竟然有大用
你 发表评论:
欢迎- 07-10Oracle 与 Google Cloud 携手大幅扩展多云服务
- 07-10分享收藏的 oracle 11.2.0.4各平台的下载地址
- 07-10Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- 07-10Oracle Database@Azure 推进到南美等新区域并增加了新服务
- 07-10Oracle宣布推出 Oracle Database@AWS 的有限预览版
- 07-10Oracle与Nextcloud合作,推出主权云上的安全协作平台
- 07-10NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 07-10对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 602℃几个Oracle空值处理函数 oracle处理null值的函数
- 594℃Oracle分析函数之Lag和Lead()使用
- 582℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 579℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 574℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 567℃【数据统计分析】详解Oracle分组函数之CUBE
- 554℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 548℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- Oracle 与 Google Cloud 携手大幅扩展多云服务
- 分享收藏的 oracle 11.2.0.4各平台的下载地址
- Oracle 和 Microsoft 推出 Oracle Exadata 数据库服务
- Oracle Database@Azure 推进到南美等新区域并增加了新服务
- Oracle宣布推出 Oracle Database@AWS 的有限预览版
- Oracle与Nextcloud合作,推出主权云上的安全协作平台
- NodeRED魔改版连接MsSql、PostgreSQL、MySQL、OracleDB存储无忧
- 对于企业数据云备份,“多备份”承诺的是成本更低,管理更高效#36氪开放日深圳站#
- 解读丨《归档文件整理规则》— 电子文件元数据存储
- Data Guard跳归档恢复的实践(dataguard failover)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)