美文网首页让前端飞
前端实现数组下标为-1访问最后一个元素

前端实现数组下标为-1访问最后一个元素

作者: 小遁哥 | 来源:发表于2023-06-11 12:07 被阅读0次

当时只回答了大致思路,proxy 这些,具体咋实现没答出来。今天早上突然想到这个问题,以为面试官要考我原型链继承

      function Father() {
        this.numbers = ["1", "2", "3", "4"];
      }
      function Son() {
        Father.call(this);
      }
      Son.prototype = new Father()
      const son = new Son();

Son.prototype 我回答成了直接指向 Father.prototype 被追问了

肯定是要实现一个伪数组的,为了避免 push 这些已有的方法再实现一遍,我才想到了继承,可这样-1 只能被当做函数调用。

Object.defineProperties

    function GrowArr() {
      const arr = [...arguments];
      Object.defineProperties(arr, {
        "-1": {
          get() {
            //防止空数组造成死循环
            return arr.length > 0 ? arr[arr.length - 1] : undefined;
          },
        },
      });

      return arr;
    }
    const arr = new GrowArr();
    console.log(arr[-1]);

const arr = [...arguments]; 此处如果是const arr = new Array(...arguments);,当初始化长度为 1 时就会变成定义数组长度

Proxy

既然-1 可以访问数组的最后一个元素,那么-2 也应该访问倒数第二个才合理些

    function GrowArr() {
      const arrProxy = new Proxy([...arguments], {
        get: function (target, property) {
          if (property >= 0) {
            return target[property];
          }
          return target[target.length + +property];
        },
      });

      return arrProxy;
    }

    const arr = new GrowArr(1, 2);

    console.log(arr[-1]);

相关文章

  • 2018-05-17 第十一天

    一、数组 (一)数组的优缺点: 优点:1:数组通过下标访问元素的效率很高。指定下标n的元素的地址:首地址+n*元素...

  • js总结(8.数组 01)

    数组01 1.声明数组 2.访问数组中的元素下标:数组中唯一标识一个元素存储位置的序号下标默认从0开始,逐渐递增,...

  • 2.5.2 数组下标

    2.5.2 数组下标 1.数组下标 访问数组的某个元素,只要写出数组名和方括号内的用逗号分开的下标即可。 例如: ...

  • 学习笔记6-数组操作

    数组 数组下标从0开始 数组中元素可以是不同类型 访问超出下标元素会返回undefined 数组常用方法 方法名作...

  • C语言实现常用数据结构:静态链表-数组实现(第5篇)

    静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系。实现要点: 1.数组下标为0的位置为...

  • Objective-C数组字典集合(17-07-31)

    数组是一个有序集合,oc中只能存储对象类型。下标从0开始,通过下标访问数组元素。NSArray:创建好后,数组中的...

  • 结构与算法(05):二叉树与多叉树

    一、树状结构 1、数组与链表 数组结构 数组存储是通过下标方式访问元素,查询速度快,如果数组元素是有序的,还可使用...

  • 数据结构与算法:二叉树与多叉树还可以这么解释!

    一、树状结构 1、数组与链表 数组结构 数组存储是通过下标方式访问元素,查询速度快,如果数组元素是有序的,还可使用...

  • 常见数组使用方法

    数组申明 数组简单操作 arr.length //数组元素个数访问或者修改数组元素可以使用数组下标 清空数组 数...

  • Objective-C数组

    数组 数组是一个有序的集合,OC中的数组只能存储对象类型,但是对于对象的类型没有限制。通过下标访问数组元素,下标从...

网友评论

    本文标题:前端实现数组下标为-1访问最后一个元素

    本文链接:https://www.haomeiwen.com/subject/waixydtx.html