条件可以在JavaScript方法中作为参数传递吗?

时间:2018-06-29 13:02:36

标签: javascript

想知道这在JavaScript中是行得通还是有意义:

if(word.includes("." || "!")) -- in context:

let howManyDots = [];

let punctuationCounter = storyWords.forEach(word => {
  if(word.includes("." || "!")) {
    howManyDots++;
  }
});

5 个答案:

答案 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++;
  }

您还可以像这样使用matchlength

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);