从JavaScript

时间:2017-12-01 02:17:39

标签: javascript arrays string

我在实践中解决了一个练习题 - 它有一个问题就是在函数内创建一个空数组并将字符串数组作为参数传递给函数并从中删除一个特定的单词。

以下是问题: 编写一个名为removeAll的函数,它接受一个字符串数组和一个String作为参数,并返回一个新数组。返回的数组应该等效于参数数组,但删除了所有出现的String参数,忽略大小写。由于函数调用,数组参数应保持不变。例如,如果名为words的数组包含[“foo”,“bar”,“baz”,“Foo”,“FOO”],则removeAll(words,“foo”)的调用应返回[“bar”,“巴兹“]。

我的代码:我未定义

function removeAll(words, remove){
  let arr = [];
  remove = '';
  arr = arr.filter(words => words !== remove);
}

removeAll(["foo", "bar", "baz"], "foo");

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:2)

近在咫尺,但你有2个错误。不要将删除设置为''。并过滤不是arr

的字词
function removeAll(words, remove){
  return words.filter(word => word.toLowerCase() !== remove.toLowerCase());
}

答案 1 :(得分:1)

您正在以错误的方式在内部使用变量。

// toLowerCase to compare lowercase strings
function removeAll(words, remove){
  return words.filter(word => 
    word.toLowerCase() !== remove.toLowerCase()
  );
}

console.log(removeAll(["foo", "bar", "baz", "FOO"], "foo"));


// Using Arrow functions
removeAllES6 = (words, remove) => 
   words.filter(word => word.toLowerCase() !== remove.toLowerCase())

console.log(removeAllES6(["foo", "bar", "baz", "FOO"], "foo"));

答案 2 :(得分:1)

除了已经提到的内容之外,由于您需要不区分大小写的比较,请使用toLowerCase()toUpperCase()

function removeAll(words, remove){
  return words.filter(words => words.toUpperCase() !== remove.toUpperCase());
}

arr = removeAll(["foo", "bar", "baz"], "foO");