【问题标题】:Finding a number in an array of strings [duplicate]在字符串数组中查找数字[重复]
【发布时间】:2018-06-01 16:20:13
【问题描述】:

我有一个这样的数组

array: [
'Student 1|##|100|@@|Third answer', 
'Student 2|##|10|@@|Third Answer ',
'Student 10|##|50|@@|Third Answer'
]

其中100代表数组第一项的id10代表id数组的第二项,50是第三项的id,以此类推。

我还有一个变量,其值等于 id,可以是 1001050.

var id = data.myId

我需要检查id是否存在于数组中。

所以如果 id10 而我这样做 array.includes(id.toString()) 它不会返回 true,除非我的数组是这样的:

array: [
   'Student 1|##|100|@@|Third answer', 
   'Student 2|##|10|@@|Third Answer ',
   'Student 10|##|50|@@|Third Answer',
   '10'
]

那我该怎么做。我猜我必须使用正则表达式。

【问题讨论】:

    标签: javascript arrays regex string


    【解决方案1】:

    我需要检查id是否存在于数组中。

    使用somesplit,将字符串item的每一项拆分后检查第3项。

    var has10 = array.some( s => s.split( "|" )[2] == "10" );
    

    演示

    var array = [
      'Student 1|##|100|@@|Third answer',
      'Student 2|##|10|@@|Third Answer ',
      'Student 10|##|50|@@|Third Answer'
    ];
    var id = "10";
    var hasId = array.some( s => s.split( "|" )[2] == id );
    
    console.log( hasId );

    【讨论】:

    • 更简单:var has10 = array.some( s => s.split( "|" )[2] == id );
    • @T.J.Crowder 同意some,删除filter。出于某种原因,filter 是我首先想到的 :)
    • @JeremyThille 是的,我得到了类似的解决方案,谢谢。
    • 是的,我可以看到您在我发布此内容时正在编辑 :)
    • 或者因为 OP 专门调用了正则表达式:var rex = new RegExp("^[^|]+\\|[^|]+\\|" + id + "\\|[^|]+\\|[^|]+$"); var has10 = array.some(s => rex.test(s)); :-) 但除非真的需要 rex,否则split 对我来说似乎更好。
    【解决方案2】:

    您可以将 Array#.find() 与此正则表达式 \|10\| 一起使用:

    let reg = new RegExp("\\|" + id + "\\|");
    

    它会给你第一个匹配正则表达式的元素,如果没有匹配,它会给你一个空数组。

    var array = [
      'Student 1|##|100|@@|Third answer',
      'Student 2|##|10|@@|Third Answer ',
      'Student 10|##|50|@@|Third Answer'
    ];
    var id = 10;
    let reg = new RegExp("\\|" + id + "\\|");
    var result = array.find(function(item) {
      return item.match(reg);
    });
    console.log(result);

    【讨论】:

    • 谢谢。这也可以。
    • @DragonBorn 欢迎您。
    猜你喜欢
    • 1970-01-01
    • 2018-01-21
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2020-06-19
    相关资源
    最近更新 更多