JS

let data1 = [{'id' : '0001', 'area' : 'Paris', 'price' : '100', 'year': '2022'}]
//should construct condition if(id === '0001' && area === 'Paris' && price === '100 && year === '2022')

let data2 = [{'price' : '300', 'year': '2021'}]
//should construct condition if(price === '300' && year === '300')

let data3 = [{'area' : 'Athens'}]
//should construct condition if(area === 'Athens')
// no && when we have only one condition

//my code attempt fo far

let ArrayNew = [];
let operator_and = ' && ';

for(let i = 0; i < data1.length; i++) {
  ArrayNew += data1.map(x => Object.keys(x) + ' === ' + operator_and);
}

console.log('if ('+ ArrayNew +')'); // if (id,area,price,year ===  && )

Question

我试图在if()语句中动态构建条件,不仅要根据键的数量,还要根据每个给定数组的键.

我希望能创造出这样的东西

if (generated_conditions) { .... }

推荐答案

可能是在try 这样的事情

let data1 = [{'id' : '0001', 'area' : 'Paris', 'price' : '100', 'year': '2022'}]

data1.forEach((item) => {
  let condition = '';
  let keys = Object.keys(item);
  keys.map((k) => {
    if (condition) {
      condition += ` && ${k} == ${item[k]}`
    } else {
      condition = `${k} == ${item[k]}`
    }

  })
  console.log(condition)
})

Javascript相关问答推荐

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

字节数组通过echo框架传输到JS blob

单击子元素时关闭父元素(JS)

GrapeJS -如何保存和加载自定义页面

嵌套异步JavaScript(微任务和macrotask队列)

如何在mongoose中链接两个模型?

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

如何将数组用作复合函数参数?

匹配一个或多个可选重复的特定模式

FileReader()不能处理Firefox和GiB文件

AG-GRIDreact 显示布尔值而不是复选框

react 路由DOM有条件地呈现元素

通过解构/功能组件接收props-prop验证中缺少错误"

如何在每隔2分钟刷新OKTA令牌后停止页面刷新

如何使用Cypress在IFRAME中打字

JSX/React -如何在组件props 中循环遍历数组

如何在不将整个文件加载到内存的情况下,在Node.js中实现Unix粘贴命令?

如果未定义,如何添加全局变量