2015-10-02 59 views
0

我有这个数组。如何过滤多维数组

如何过滤contacts的数组?

enter image description here

我想删除其中有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); 
    } 
}); 

所以输出应该是

enter image description here

+2

您不必返回过滤响应'res.json(结果);'应该是'res.son(过滤);' – Tushar

+0

你编辑你的问题正是我发布的答案。这是怎么回事? – Buzinas

+0

你不应该按照答案编辑问题,你可以在答案上添加评论,或者在问题中添加新的部分作为编辑或更新,并解释场景 – Tushar

回答

4

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); 
+0

@你说得对。我以为他是,因为我在一个小时前回答了一个类似的问题。 – Buzinas

+0

您是否认为'filter'会起作用,因为我从上面的截图看到'results'是一个_object_,而不是_array_ – Tushar

+0

现在,'filtered'将只包含'result'中的'contacts',我假设OP想要'schedSettings '和其他元素从原始对象也:)你可以确认从第二个屏幕截图 – Tushar