当前位置: 首页 > 面试题库 >

使用数组映射条件筛选结果

闽朝
2023-03-14
问题内容

我正在尝试使用数组映射进一步过滤对象,以准备将其发送到服务器进行保存。我可以过滤为1个键值,这很不错,但是我想更进一步,将其与布尔值内部进行比较。

所以,现在这就是我所拥有的-

$scope.appIds = $scope.applicationsHere.map( function(obj){
        if(obj.selected == true){
            return obj.id;
        }
    });

这对于拉出id很有用,但是如果它们的选定值==
false,我不想将它们压入这个新数组中,因此我将一个条件作为进一步过滤条件。这有点奏效,我得到了一个id数组,但是具有.selected ==
false的id仍然在数组中,只是值为null。因此,如果对象中有4个项目,其中2个为假,则看起来像这样-

 appIds = {id1, id2, null, null};

我的问题是-有没有这样做的方法而没有将null放在那里。谢谢阅读!


问题答案:

您正在寻找的.filter()功能:

  $scope.appIds = $scope.applicationsHere.filter(function(obj) {
    return obj.selected;
  });

这将产生一个数组,该数组仅包含那些其“ selected”属性为true(或真实)属性的对象。

编辑 抱歉,我喝了咖啡,但我错过了评论-是的,正如jAndy在评论中指出的那样,过滤然后仅提取“ id”值,结果是:

  $scope.appIds = $scope.applicationsHere.filter(function(obj) {
    return obj.selected;
  }).map(function(obj) { return obj.id; });

一些功能库(例如Functional,在我看来并没有得到足够的.pluck()重视)具有从对象列表中提取属性值的功能,但是本机JavaScript具有一组相当精简的此类工具。



 类似资料:
  • 我有一个选择类型的表单填充从以下数组: 如果此日期在具有相同时隙的数据库中已知,则必须过滤掉此时隙。现在他一天只取一个值。 例如,我有一个数组: 在那里,我想用这个函数过滤掉以下值: 因此,我预计“17:00”和“17:30”将不再可见。如你所见,只有17:00不再可用。如果我有1个值,它就会工作。有人能告诉我我做错了什么吗?

  • 带hibernate的JSF应用程序 有没有一种方法可以使用联接来过滤条件列表返回的结果<我有两张桌子。订单和顾客。 我需要返回丢失电子邮件地址的客户的所有订单,以及所有order.billingCustomeId=null和CustomeId=nullorder.shipping订单。 客户可以在或上进行匹配。 我将使用的SQL Hibernate标准 这将返回billing/shipping

  • 我正在使用谷歌表单的过滤功能,但无法按我想要的方式使用,已经3天了。。。 基本上,我有第1页,有一列“电子邮件”和一列“潜在客户ID”。表2具有相同的“潜在客户ID”,但已过滤。含义,第1页,其“顺序为1,2,3,4,5…”。。。第二张不是,像是2,4,5,23,41。。。我想在表1中找到正确的电子邮件地址,该地址在两个表中具有相同的Lead ID。我使用了Filter函数,它工作得非常好,因为它

  • 如何过滤

  • 我想使用条件筛选数据集。我尝试使用.isin()函数,但在筛选np.array浮点列表时得到了一个空数据帧。这是我的密码 我在绝对差异btw公式列中搜索的值实际上是存在的,因为当我运行df[15:25]时,我得到了这个 那么,我如何使用.isin()函数或任何条件语句来实现它呢。目标是用0.1到0.9范围内的df['Absolute Diff btw formulas']值打印数据帧。谢谢