js中一些api的实现
Published on Jan 31, 2023, with 8 view(s) and 0 comment(s)
Ai 摘要:本文介绍了JavaScript中`reverse()`方法的原生实现。通过自定义`myReverse`方法,演示了如何颠倒数组元素顺序并修改原数组。实现分为两部分:处理标准数组时创建倒序新数组并替换原内容;处理类数组对象时通过键值重组实现倒序。代码示例验证了该方法对数组和类数组对象的有效性,输出结果符合预期。

1,reverse

作用:将数组中的元素位置颠倒并返回该数组,该方法会改变原数组。 语法:arr.reverse()

Array.prototype.myReverse = function () {
  if (this instanceof Array) {
    //如果是数组
    let len = this.length,
      i = this.length - 1;
    let res = []; //定义一个数组
    for (i; i >= 0; i--) {
      res.push(this[i]);
    }
    this.length = 0; //清空原数组
    Array.prototype.splice.apply(this, [0, 0, res]); //将新结果插入到原数组中
  } else {
    //处理类数组
    let keys = [],
      values = [];
    let len = this.length;
    delete this["length"];

    for (let k in this) {
      keys.push(k);
      values.push(this[k]);
    }
    for (let i = 0, l = keys.length; i < l; i++) {
      this[keys[i]] = values[len - 1 - i];
    }
    this["length"] = len;
  }
  return this; //返回结果
};

let arr1 = [1, 3, 5, 7, 9];
arr1.myReverse();
let arr2 = { 0: 1, 1: 2, 2: 3, length: 3 };
Array.prototype.myReverse.call(arr2);

console.log(arr1);  //[ 9, 7, 5, 3, 1 ]
console.log(arr2);  //{ '0': 3, '1': 2, '2': 1, length: 3 }