Javascript 余烬过滤器by-使用多个值进行过滤

Javascript 余烬过滤器by-使用多个值进行过滤,javascript,json,ember.js,Javascript,Json,Ember.js,如何使用filterBy函数使用多个值筛选列表 我的情况是-我有一个控制台列表,我想根据控制台id进行筛选 不幸的是,我无法控制JSON,因此每个控制台都有一个不同的ID。我希望在嵌套的assignedConsole JSON中循环使用控制台ID,然后过滤根assignedConsole JSON 我可以获取第一个对象的控制台ID并将其放入过滤器中,但我不知道如何使用两个值 我创建了一个emberjs bin来演示我的问题:编辑:查看我的其他答案以获得有效的解决方案 我建议在模型或控制器上创建一

如何使用filterBy函数使用多个值筛选列表

我的情况是-我有一个控制台列表,我想根据控制台id进行筛选

不幸的是,我无法控制JSON,因此每个控制台都有一个不同的ID。我希望在嵌套的assignedConsole JSON中循环使用控制台ID,然后过滤根assignedConsole JSON

我可以获取第一个对象的控制台ID并将其放入过滤器中,但我不知道如何使用两个值


我创建了一个emberjs bin来演示我的问题:

编辑:查看我的其他答案以获得有效的解决方案

我建议在模型或控制器上创建一个计算属性,以便为您展平嵌套结构:

allConsoles: function() {
  return this.get('consoles')
    .mapProperty('assignedConsoles').reduce(function(a, b) {
      return a.concat(b);
    })
    .uniq();
}.property('consoles.@each')

这将首先从
consoles
属性中获取所有项,然后将其所有
assignedConsoles
映射到一个中间值,然后将所有
assignedConsoles
相加以减少中间值。最后一个
uniq()
调用只是删除数组中发现的任何重复项。

在我之前的回答中进行了一些澄清之后,我意识到您希望按控制台进行筛选,而不是筛选分配的控制台值。我的建议是在控制器上添加一个
selectedConsole
属性,并显示所选控制台的
assignedConsoles
数组


使用JSBin:

如果你能用你的答案编辑JSBin,那将是一个很大的帮助。我不是100%确定你的数据源,但不是
控制台。assignedConsoles
只是
控制台的集合。@each.assignedConsoles
?如果是这样,我不确定您是否需要通过根
assignedConsoles
数组进行筛选。这是您要查找的吗?如果是这样的话,我可以更新答案。像做梦一样工作。看来我对这个想法的想法是不对的。谢谢你的帮助!!!!如果您添加它作为答案,我将选择它。