美文网首页让前端飞
2021-04-25 用最简洁代码实现 indexOf 方法

2021-04-25 用最简洁代码实现 indexOf 方法

作者: alanwhy | 来源:发表于2021-04-25 13:29 被阅读0次

    用最简洁代码实现 indexOf 方法

    indexOf 有两种:

    1. String.prototype.indexOf()
    // 返回从 fromIndex 处开始搜索第一次出现的指定值的索引,如果未找到,返回 -1
    // fromIndex 默认值为 0
    str.indexOf(searchValue [, fromIndex])
    
    1. Array.prototype.indexOf()
    // 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回 -1
    arr.indexOf(searchElement[, fromIndex])
    

    解答

    String.prototype.indexOf()

    思路:正则,字符串匹配

    function sIndexOf(str, searchStr, fromIndex = 0) {
      var regex = new RegExp(`${searchStr}`, "ig");
      regex.lastIndex = fromIndex;
      var result = regex.exec(str);
      return result ? result.index : -1;
    }
    

    Array.prototype.indexOf()

    function aIndexOf(arr, elem, fromIndex = 0) {
      if (!elem) return -1;
      for (let i = fromIndex; i < arr.length; i++) {
        if (arr[i] === elem) return i;
      }
      return -1;
    }
    

    合二为一

    function indexOf(items, item, fromIndex = 0) {
      let isArray = Array.isArray(items);
      let isString = Object.prototype.toString.call(items) == "[object String]";
      if (!isArray && !isString) throw new SyntaxError();
      if (isArray) return sIndexOf(items, item, fromIndex);
      else return aIndexOf(items, item, fromIndex);
    }
    

    相关文章

      网友评论

        本文标题:2021-04-25 用最简洁代码实现 indexOf 方法

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