我想检查数字是否在字符串中,例如:
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)?
答案 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 。虚假值为0
,NaN
,""
,undefined
,null
,当然还有false
。真实的价值观是其他所有。
答案 2 :(得分:0)
答案 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当前索引。如果是这样,我们将其输出到警报。如果此方法适合您,请告诉我。如果您需要帮助,请随时向我询问这些内容!