我需要计算过滤出的单词,但不会得到任何输出

时间:2019-04-13 07:58:24

标签: javascript

我需要用Java语言制作句子反转器。可逆部分并显示有效。使用我的过滤器的字数计数不起作用。我想计算包含我的过滤字符串的单词。

示例:

  

过滤器:“ e”   句子:“是的,我不知道”

     

输出:“已过滤1个字。”

let knop = document.getElementById("button");

function reverser() {
  let output = document.getElementById("outputWoorden");

  let filterField = document.getElementById("filterInput");
  let filterValue = filterField.value;
  let input = document.getElementById("tekstInput");
  let text = input.value;
  let filterAmount = document.getElementById("filterAantal");
  let filterNumber = filterAmount.value;
  let array = [];
  let count = 0;

  array += text.split(" ").reverse().join(" ");
  for (let i = 0; array.length; i++) {
    if (array[i].filter(filterValue)) { //this part is wrong
      array.reduce(array[i]);
      count += 1;
    }
  }
  filterNumber.value = count + "word(s) filtered.";
  output.value = array;
}

knop.addEventListener("click", reverser);
Input: <input id="tekstInput"><br>
Filter: <input id="filterInput"><br>
Amount: <input id="filterAantal"><br>
Output: <input id="outputWoorden">
<button id="button">Filter</button>

输出应为正确数量的已过滤单词。

1 个答案:

答案 0 :(得分:0)

如果要过滤数组,请不要使用join首先将其转回字符串。

您不应在数组上循环,也应调用filter。过滤器直接在数组上调用。它的参数是一个测试该元素是否符合您的条件的函数。测试一个字符串是否包含另一个字符串的方法是includes()

filter()方法返回一个与条件匹配的所有元素的数组。因此,如果要删除匹配的单词,则必须使用逻辑 not 运算符!反转测试。

通过从过滤后的数组的长度中减去原始数组的长度,可以获得删除的单词数。

let knop = document.getElementById("button");

function reverser() {
  let output = document.getElementById("outputWoorden");

  let filterField = document.getElementById("filterInput");
  let filterValue = filterField.value;
  let input = document.getElementById("tekstInput");
  let text = input.value;
  let filterAmount = document.getElementById("filterAantal");
  let array = text.split(" ");
  let filtered = array.filter(word => !word.includes(filterValue));
  let reversed = filtered.reverse().join(" ");
  let count = array.length - filtered.length;
  filterAmount.value = count + " word(s) filtered.";
  output.value = reversed;
}

knop.addEventListener("click", reverser);
Input: <input id="tekstInput"><br>
Filter: <input id="filterInput"><br>
Amount: <input id="filterAantal"><br>
Output: <input id="outputWoorden">
<button id="button">Filter</button>