【问题标题】:Making strings for filter condition为过滤条件制作字符串
【发布时间】:2019-02-22 15:13:19
【问题描述】:

我想制作其中包含许多变量的字符串变量,因此我想动态加入/构造它并将变量传递给数组的过滤器函数。

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;
}

【问题讨论】:

  • 您正在尝试使用字符串重新创建函数调用???字符串不会发生这种情况。
  • new 关键字构造一个数组并不是一个好主意。你可以说var values = []; values.push("Dehli"); 来创建一个空数组并将字符串“Dehli”添加到其中。
  • 谢谢,我会注意的

标签: javascript arrays multidimensional-array filter


【解决方案1】:

您不能创建字符串并期望 js 引擎知道它是 JavaScript 代码。您应该制作一个进行检查的功能。因此,将您的代码更改为一个函数,它会遍历您的对象并查看它是否匹配。

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

【讨论】:

  • 感谢您的回答。我将详细介绍此代码。
  • 让 totalPrice = myresult.reduce((acc,next) => acc + next.Demand, 0);如何让下一个.需求动态
猜你喜欢
  • 2021-03-16
  • 2017-03-26
  • 2018-01-25
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多