手写数组的函数

一、slice方法

1、作用

arr.slice(); 数组截取元素,返回被截取的新元素,原数组不改变

        var arr = [1, 2, 3, 4, 5];
        // var arr2 = arr.slice(); //复制arr的所有元素给arr2,没有引用关系
        // var arr2 = arr.slice(0); //复制arr的所有元素给arr2,没有引用关系
        // var arr2 = arr.slice(3); //将数组从下标3开始到结尾截取形成新数组
        // var arr2 = arr.slice(-2); //将数组从倒数第2位开始到结尾截取形成新数组
        // var arr2 = arr.slice(3, 4); //将数组从下标3开始到下标4截取形成新数组
        // var arr2 = arr.slice(-2, 4); //将数组从倒数第2位开始到下标4截取形成新数组
        // var arr2 = arr.slice(-2, -1); //将数组从倒数第2位开始到倒数第1位截取形成新数组
        // console.log(arr2, arr);

2、封装

Array.prototype.mySlice = function () {
  var start = 0;
  var end = this.length;
  if (arguments.length === 1) {
    start = arguments[0];
  } else if (arguments.length === 2) {
    start = arguments[0];
    end = arguments[1];
  }
  var temp = [];
  for (var i = start; i < end; i++) {
    tmp.push(this[i]);
  }
  return temp;
}

3、应用

[].mySlice.call(fakeArr) 可以把伪数组fakeArr转为数组

二、find和findIndex方法

1、作用

find 接收一个方法作为参数,方法内部返回一个条件,find 会遍历所有的元素,执行你给定的带有条件返回值的函数,符合该条件的元素会作为 find 方法的返回值,如果遍历结束还没有符合该条件的元素,则返回 undefined
findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。

2、封装

Array.prototype.myFind = function (conditionFunc) {
  for (var i = 0; i < this.length; i++) {
    if (conditionFunc(this[i], i)) {
      return this[i]
      // return i   // 返回索引,即fandIndex()方法
    }
  }
}

var ret = users.myFind(function (item, index) {
  return item.id === 2
})
原文地址:https://www.cnblogs.com/yyrecord/p/13438473.html