JS - 检查数字是否在文本中

时间:2016-11-15 21:43:43

标签: javascript arrays

我想检查数字是否在字符串中,例如:

var w1 = "1" && "5" && "9";
var newX = "1,7,9,5"
if (newX.indexOf(w1) > -1) {
            alert("is it");
            break;
}

不幸的是,如果数组中只有9,则代码会显示警告。如何检查1,5或9是否为字符串(newX)?

4 个答案:

答案 0 :(得分:2)

var w1 = "1" && "5" && "9";

不符合你的想法。

您需要制作一个数组并分别检查每个项目:

var w1 = ["1", "5", "9"];

var newX = "1,7,9,5"

if (w1.some(function(item) {
  return newX.indexOf(item) > -1
})) {
  alert("is it");
}

答案 1 :(得分:1)

这一行:

var w1 = "1" && "5" && "9";

与此结果完全相同:

var w1 = "9";

因为&&运算符计算其左侧操作数,如果这是真的,则¹评估其右侧操作数并使其成为表达式的结果。

  

我如何检查1,5或9是否为字符串(newX)?

你需要某种循环。例如,您可以将要检查的内容放入数组中,然后使用some

var w1 = ["1", "5", "9"];
var newX = "1,7,5"; // Removed the 9 just for clarity
// This one finds it
if (w1.some(function(entry) {
  return newX.indexOf(entry) != -1;
})) {
    console.log("is it");
}
newX = "4, 7, 8";
// This one doesn't
if (w1.some(function(entry) {
  return newX.indexOf(entry) != -1;
})) {
    console.log("is it 2");
}

Array#some中,重复调用回调。如果回调值返回真值,则some的结果为true;如果没有,那就是false

使用ES2015,some回调可以更简洁:

if (w1.some(entry => newX.indexOf(entry) != -1)) {
    console.log("is it");
}

¹“truthy” - 当被视为布尔值时强制为true的值。值为 falsy truthy 。虚假值为0NaN""undefinednull,当然还有false。真实的价值观是其他所有。

答案 2 :(得分:0)

使用正则表达式和positive lookahead



(number_of_samples, number_of_features)




答案 3 :(得分:0)

有些人已经说过,你想制作你的w1和newX变量数组。在我看来,它也更容易将数字与数字进行比较,而不是试图比较数字串。上面的一些解决方案可能适合您,但也可以通过嵌套循环实现。下面是对我这样做的看法。

var w1 = [1,5,9];
var newX = [1,7,9,5]

for (i = 0; i < newX.length; i++) {
    for (j = 0; j < w1.length; j++) {
        if (w1[j] == newX[i])
        alert("Found " + w1[j] + "!");
    }
}

我们首先遍历数组newX并检查每个索引(i)然后我们遍历w1数组并检查当前索引(j)是否等于newX当前索引。如果是这样,我们将其输出到警报。如果此方法适合您,请告诉我。如果您需要帮助,请随时向我询问这些内容!