在字符串数组中查找数字

时间:2017-12-19 09:11:01

标签: javascript arrays regex string

我有一个像这样的数组

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

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

我还有一个变量,其值等于 id ,可以 100 10 50

var id = data.myId

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

因此,如果 id 10 并且我array.includes(id.toString())它将不会返回true,除非我的数组如下:

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

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

2 个答案:

答案 0 :(得分:3)

  

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

使用somesplit并在分割字符串项的每个项目后检查第3项。

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

<强>演示

&#13;
&#13;
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 );
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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

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

它将为您提供与正则表达式匹配的第一个元素,如果没有匹配则为空数组。

&#13;
&#13;
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);
&#13;
&#13;
&#13;