如何使用react-native域动态过滤

时间:2016-07-12 00:54:55

标签: javascript react-native realm lodash

我正在切换到本地的反应,并希望利用他们的内置查询/过滤。我有3个可能选项的复选框过滤器,选中的选项作为数组传递:

var filters = ['complete', 'inProgress', 'notStarted']

如何在不使用多个if / else语句的情况下进行过滤?

  let subdivisions = realm.objects('Subdivision');
       let result = subdivisions.filtered('statusSurvey == $0',['complete','notStarted']);

或者是否有必要使用普通的javascript或lodash?

2 个答案:

答案 0 :(得分:2)

您是否在询问如何动态构建一个领域查询字符串,该字符串将根据当前过滤器返回结果?

如果我理解正确,您可以构建您的查询字符串,如:

var query = 'statusSurvey == ';
for (var i = 0; i < filters.length; i++) {
  query += `'${filters[i]}'`; 
  if (i + 1 < filters.length) {
    query += ` OR statusSurvey == `
  }
}
var result = subdivisions.filtered(query); 

答案 1 :(得分:1)

这是另一种方法,无需在字符串中构建查询,并且必须转义过滤器值:

filters = ['a', 'b', 'c']
const realmFilter = [Array(filters.length).fill().map((x, i)=> `statusSurvey == $${i}`).join(" OR ")].concat(filters)

realm.objects('Subdivision').filtered(...realmFilter)