想知道这在JavaScript中是行得通还是有意义:
if(word.includes("." || "!")) -- in context:
let howManyDots = [];
let punctuationCounter = storyWords.forEach(word => {
if(word.includes("." || "!")) {
howManyDots++;
}
});
答案 0 :(得分:2)
不。表达式"." || "!"
的计算结果为"."
,因此您将传递给.includes
。您必须这样做:
word.includes(".") || word.includes("!");
概括地说:
[".", "!"].some( char => word.includes( char ) );
答案 1 :(得分:1)
您可以使用word.includes(".") || word.includes("!")
由于期望的值为return
,因此可以使用filter
代替forEach
。使用length
来获取数组计数。
let storyWords = ['apple', 'javascr!pt', 'dot.'];
let punctuationCounter = storyWords.filter(word => {
return word.includes(".") || word.includes("!");
}).length;
console.log(punctuationCounter);
您可以将其缩短为:
let punctuationCounter = storyWords.filter(word => word.includes(".") || word.includes("!") ).length;
答案 2 :(得分:1)
不可能,表达式"." || "!"
将在传递给函数之前先求值,您可以使用以下示例测试情况
let foo = (p) => console.log(p)
foo("." || "h")
答案 3 :(得分:0)
JavaScript不支持此语法。
您会发现“最接近”的方法是Math.min
之类的方法,它接受无限的参数集:
Math.min(0, 2, 52, -1)
但是String.prototype.includes
只允许一个字符串参数。
参见API https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
答案 4 :(得分:0)
您可以使用条件|在正则表达式/\.|!/.test(str)
中为或,但在includes()
var str = "sometex!";
console.log(/\.|!/.test(str));
顺便说一句,要匹配的不止一件事情,对我来说,使用.test
在您的代码中,类似于:
if(/\.|!/.test(word)) {
howManyDots++;
}
您还可以像这样使用match
和length
:
var str = "sometex!....";
var howManyDots = (str.match(/\.|!/g)).length;
console.log(howManyDots);
如果您有一个字符串数组:
var arr = ["sometex!....", "sometex2!!!!","sometex2!!.", "sometex2!", , "sometex2"];
howManyDots = (arr.join().match(/\.|!/g)).length
console.log(howManyDots);