【问题标题】:How do I return an array containing the elements which do not match a given parameter in JavaScript?如何返回包含与 JavaScript 中给定参数不匹配的元素的数组?
【发布时间】:2017-10-06 10:48:23
【问题描述】:

编写一个名为“removeElement”的函数。

给定一个元素数组和一个“discarder”参数, “removeElement”返回一个包含给定项目的数组 与“discarder”参数不匹配的数组。

注意事项: * 如果所有元素都匹配,它应该返回一个空数组。 * 如果传入一个空数组,它应该返回一个空数组。

我认为这将是解决方案:

  function removeElement(array, discarder) {

    var newarr = array.filter(function(cv, i, a){
      if (array == []) {
        return [];
      } else if (cv != discarder ) {
        return  cv;
      } 
    });
      return newarr;
  }

但我收到此错误:

return_an_array_with_all_booleans_not_matching_discarder 返回一个所有布尔值都不匹配的数组

我认为这会起作用,因为最初我没有添加子句来考虑是否所有值都等于丢弃器。

function removeElement(array, discarder) {

    var newarr = array.filter(function(cv, i, a){
      if ((array == []) || (cv == discarder)) { // added this expression to evaluate.
        return [];
      } else if (cv != discarder ) {
        return  cv;
      } 
    });
      return newarr;
  }

【问题讨论】:

  • array.filter 应该返回一个布尔值
  • 1. array == [] 永远是假的。 2. 返回[] 将被filter() 函数解释为true,这意味着当前项目不会被排除在结果之外。

标签: javascript arrays


【解决方案1】:

Array#filter

filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

需要返回一个布尔值(或至少是一个真/假)值,您可以只返回带有给定discarder 的检查并返回比较结果。

结果是一个没有给定值的数组。

function removeElement(array, discarder) {
    return array.filter(function(value) {
        return value !== discarder;
    });
}

【讨论】:

  • 啊,我想我忽略了过滤器文档中有关boolean 的组件。看起来我写的内容太直白了,认为如果当前值没有通过测试,那么只返回 cv 就足够了......
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2018-06-03
  • 2012-10-25
  • 1970-01-01
  • 2019-11-06
  • 2018-10-09
  • 1970-01-01
相关资源
最近更新 更多