在字符串数组中查找数字[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我有这样的数组

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'
]

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

javascript arrays regex string
2个回答
3
投票

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

使用somesplit并在分割字符串项目的每个项目后检查第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 );

1
投票

你可以使用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);
© www.soinside.com 2019 - 2024. All rights reserved.