【问题标题】:How to filter Multidimensional arrays如何过滤多维数组
【发布时间】:2015-12-30 05:51:49
【问题描述】:

我有这个数组。

如何过滤contacts的数组?

我想删除值为participantSetting.excistence == false的对象

我正在使用节点 js,这是我的代码:

schedule.get('/conference/schedule_participants/:circle/:schedId', function(req, res) {
  if(req.schedId){
    getParticipants( req.params, function(contacts){
      results.contacts=contacts;

           var filtered = results(function(c) {
              return c.contacts.participantSetting.existence;
          });
            res.json(filtered);
    }); 
  }else{
          var filtered = results(function(c) {
              return c.contacts.participantSetting.existence;
          });
            res.json(filtered);
  }
});

所以输出应该是

[![在此处输入图片描述][2]][2]

【问题讨论】:

  • 您没有返回过滤后的响应 res.json(results); 应该是 res.son(filtered);
  • 您已将您的问题编辑为我发布的答案。怎么了?
  • 您不应该根据答案编辑问题,您可以在答案中添加 cmets 或在问题中添加新部分为EDITUPDATE 并解释场景
  • 你好@Buzinas 这是我的原始代码。 .这也不起作用。
  • @Agent69 results函数是什么,添加它的代码

标签: javascript arrays node.js multidimensional-array


【解决方案1】:

您的filter 已经正确,但您必须发送您设置的变量,而不是results

res.json(filtered);

Array.prototype.filter 方法不会改变当前数组。

它使用过滤后的项目创建一个新数组。


更新 III

抱歉,试图快速回答,我没有意识到您没有正确使用filter 函数,也没有意识到results 是一个对象,而不是一个数组。而且filter 方法在这种情况下根本不起作用。因此,下面有一个适合您的解决方案:

results.contacts = results.contacts.filter(function(c) {
  return c.participantSetting.existence;
});
res.json(results);

【讨论】:

  • @Andy 你是对的。我以为他是,因为我在一小时前向他回答了类似的问题。
  • 你认为filter 会起作用吗,因为我从上面的截图中看到results 是一个object,而不是array
  • 现在,filtered 将只包含来自resultcontacts,我认为 OP 也想要来自原始对象的schedSettings 和其他元素 :) 你可以从第二个屏幕截图中确认这一点
  • @Tushar 是的,我只是在想这个,并且已经第三次更新了答案:(
  • (y) 还有一点,你不需要额外的变量contactsFiltered,你可以直接将过滤后的联系人分配给result中的联系人
猜你喜欢
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2021-05-24
相关资源
最近更新 更多