【问题标题】:Get index of one array item with RegExp使用 RegExp 获取一个数组项的索引
【发布时间】:2019-07-23 15:38:14
【问题描述】:

我有类似的数组

var arr = ['8888', '2222|1', '6666', '4444|2']

我需要获取包含第一个数字的项目索引(在|if 符号存在之前)。下面是有用的正则表达式,你可以用它,好用。

var result = new RegExp('\\b' + value.replace(/^(.*)\|.*$/, '$1') + '\\b').test(arr);

value = '2222'; \\true
value = '222'; \\false
value = '2222|1'; \\false

但我需要索引,如果项目存在则不需要。

value = '8888'; \\0
value = '2222'; \\1
value = '222'; \\-1
value = '2222|1'; \\-1

【问题讨论】:

    标签: javascript arrays regex


    【解决方案1】:

    使用findIndex

    var arr = ['8888', '2222|1', '6666', '4444|2']
    
    const getIndex = (arr, n) => arr.findIndex(a => a.split("|")[0] === n);
    
    console.log(getIndex(arr, "8888"))
    console.log(getIndex(arr, "2222"))
    console.log(getIndex(arr, "222"))
    console.log(getIndex(arr, "2222|1"))

    如果不支持findIndex,可以添加this polyfill Array.prototype 中可用的方法。您还可以使用简单的for 循环并在找到匹配项时返回:

    var arr = ['8888', '2222|1', '6666', '4444|2']
    
    function getIndex(arr, n) {
      for (var i = 0; i < arr.length; i++) {
        if (arr[i].split("|")[0] === n)
          return i;
      }
      
      return -1;
    }
    
    console.log(getIndex(arr, "8888"))
    console.log(getIndex(arr, "2222"))
    console.log(getIndex(arr, "222"))
    console.log(getIndex(arr, "2222|1"))

    T.J. 建议的另一个选项。克劳德:

    var index = -1;
    arr.some(function(a, i) {
      if (a.split("|")[0] === n) {
        index = i;
        return true;
      }
    });
    

    【讨论】:

    • 好的,现在它回答了这个问题。
    • 看起来我需要什么,但旧的 IE 有 findIndex() 的问题,也许是一些 ES5 解决方案?
    • @alexso 您可以将 polyfill 添加到您的 js 文件之一。否则你必须使用 for 循环
    • @alexso - 如果你不想使用 polyfill,你可以这样做 var index = -1; arr.some(function(a, i) { if (a.split("|")[0] === n) { index = i; return true; }); some 是 ES5。
    • @alexso 当你写的时候,@t 你会得到建议的名字,你可以选择它。您只能在评论中提及。既然你已经@我了,T.J 的名字就不会出现在自动填充中
    猜你喜欢
    • 2021-11-24
    • 2020-10-09
    • 2018-06-06
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2018-03-28
    相关资源
    最近更新 更多