如何将两个数组与一些运算符组合?

时间:2018-05-30 17:13:18

标签: javascript jquery arrays arraylist operators

我有两个数组如下,

var arr1 = [false, true, false];

var arr2 = [And, Or, null];

现在我用操作员交换来创建这两个数组。

并替换为&& 或者用||

替换

这有可能实现吗?

现在我预计结果是

var result = false && true || false;

if(result){
// when result true, 
}

else{
// when result false
}

请建议您的回答!!!

2 个答案:

答案 0 :(得分:1)

只有当arr1和arr2满足这两个条件时它才会起作用

  
      
  1. arr2应该只有两种类型的'和'和'或'
  2.   
  3. arr2的长度应为arr1.length-1
  4.   



var arr1 = [false, true, false];

var arr2 = ['And', 'Or', null];

arr2 = arr2.map(val => {
    val = val == "And" ? "&&" : val;
    val = val == "Or" ? "||" : val;
    return val;
})


var resultantArray = arr1.reduce((obj, val, index) => {

    obj.push(val);
    if (arr2[index] && index < arr1.length - 1)
        obj.push(arr2[index]);
    return obj
}, []);

var resultantCondition = resultantArray.join(" ");
console.log(resultantCondition);

if (eval(resultantCondition))
    console.log(true);

else
    console.log(false);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以为操作数添加字符串,并使用一个对象来收集所有运算符,并通过获取相同索引的函数来减少数组,并返回函数调用的值。

&#13;
&#13;
var fn = { and: (a, b) => a && b, or: (a, b) => a && b, identity: a => a },
    operands = [false, true, false],
    operators = ['and', 'or', null],
    result = operands.reduce((a, b, i) => (fn[operators[i]] || fn.identity)(a, b));

console.log(result);    
&#13;
&#13;
&#13;