为过滤条件制作琴弦

时间:2019-02-22 15:13:19

标签: javascript arrays multidimensional-array filter

我想使其中包含许多变量的字符串变量,所以我想动态地连接/构造它,并将该变量传递给Arrays的过滤器函数。

const mytuple = thisobj => thisobj.location === value ;

我想构造上面的变量mytuple以在下面使用

let myresult = datasource.filter(mytuple);

我正在执行以下操作,但收到错误消息Delhi is not a function

var keys = new Array("location");
var values = new Array("Delhi");
const finaltuple = join(keys, tuples);
let myresult = datasource.filter(finaltuple);
console.log(myresult);

function join(keys, values) {
  var  joincondition = "";
  for(var i = 0; i < keys.length; i++) {
      joincondition += "thisobj." + keys[i] + "===" + '"' + tuples[i] + '"';
  }
  return joincondition;
}

1 个答案:

答案 0 :(得分:0)

您无法创建字符串,并且期望js引擎知道它是JavaScript代码。您应该创建一个执行检查的功能。因此,将您的代码更改为一个函数,并在您的对象上循环并查看它是否匹配。

var filters = [["location", "Delhi"], ["foo", "bar"]];
const check = obj => filters.every(req => obj[req[0]] === req[1])
let myresult = datasource.filter(check)