【JS】对象数组里多条数据合并关联获取条件判断结果

对象数组里多条数据合并关联获取判断结果
js 存在数组对象a1属性名称,a2要判断的值,a3判断条件,a4多条之间的关联符号

[{a1:'name',a2:'张三',a3:'=',a4:'&&'},
{a1:'name1',a2:'李四',a3:'NOT IN',a4:'||'},
{a1:'name2',a2:'王五',a3:'IN',a4:''}]

希望处理返回结果:

this.value[name]=='张三' && !'李四'.includes(this.value[name1]) ||  '王五'.includes(this.value[name2])

最终true或者false

可以使用以下JavaScript代码来处理给定的数组对象:

let arr = [{a1:'name',a2:'张三',a3:'=',a4:'&&'},{a1:'name1',a2:'李四',a3:'NOT IN',a4:'||'},{a1:'name2',a2:'王五',a3:'IN',a4:''}];

let result = arr.map(obj => {
    if(obj.a3 == '=') {
        return this.value[obj.a1] == obj.a2;
    } else if(obj.a3 == 'IN') {
        return obj.a2.includes(this.value[obj.a1]);
    } else if(obj.a3 == 'NOT IN') {
        return ! obj.a2.includes(this.value[obj.a1]);
    }
}).join(` ${arr[0].a4} `);
console.log(eval(result));

存在问题:join(${arr[0].a4})拿不到每一项的连接符,继续调整

let result = "";
for (let obj of arr) {
	let conditionResult;
		if (obj.a3 == '=') {
			conditionResult = this.value[obj.a1] == obj.a2;
		} else if (obj.a3 == 'IN') {
			const arr = obj.a2.split(",");
			conditionResult = arr.includes(this.value[obj.a1]);
		} else if (obj.a3 == 'NOT IN') {
			const arr = obj.a2.split(",");
			conditionResult = !arr.includes(this.value[obj.a1]);
		}
		if (result == "") {
			result = conditionResult+""+ (obj.a4 ? obj.a4 : '');
		} else {
			result += conditionResult+""+ (obj.a4 ? obj.a4 : '');
		}
}
console.log(result);
console.log(eval(result));

这段代码会根据数组对象中的条件构建逻辑表达式,并使用eval()函数计算最终的结果。请注意,使用eval()函数需要谨慎,因为它会执行传入的字符串作为JavaScript代码

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值