当前位置: 首页 > 知识库问答 >
问题:

Javascript - 比较布尔数组并创建一个新数组

谭高峯
2023-03-14

我很好奇如何比较这些数组,请记住这是一个示例,它不限于 4 个数组,因为这可能或多或少取决于用户选择)

let array0 = [false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true ,true ,false,false,false,false,false,false,false,false,true ,true ,true ,true,true,false,true,true,true,true,false,false]
let array1 = [true ,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true ,true ,true ,true ,false,true ,false,true ,true ,false,true ,true ,true ,true ,true,true,true ,true,true,true,true,true ,true ]
let array2 = [true ,true,true ,true ,true ,true ,true ,true ,true,true ,true ,true ,true ,true ,true ,true ,true ,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true ,true,true,true,true,true ,true ]
let array3 = [true ,true,true ,true ,true ,true ,true ,true ,true,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true ,true,true,true ,true,true,true,true,true ,true ]

最终目标是根据上述所有数组的比较/验证,获得一个具有真值或假值的新数组,仅当所有 4 个数组在该索引位置都有一个真值时,才应设置一个真值,如果它们是否为假值,例如:

let resultArray = [false, true, false, false, /* etc */]

希望我解释得正确。

共有3个答案

南门焱
2023-03-14
let array0 = [false, true, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, false, true, true, true, true, false, false]
let array1 = [true, true, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, true, true, true, true, false, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true]
let array2 = [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true]
let array3 = [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]

let MAX_INDEX = Math.max(array0.length, array1.length, array2.length, array3.length)

let result = []

for (let i = 0; i < MAX_INDEX; i++) {
  result[i] = array0[i] || false &&
    array1[i] || false &&
    array2[i] || false &&
    array3[i] || false
}

console.log(result)
薛淳
2023-03-14

我认为您应该创建一个包含所有数组的数组。然后您可能需要一个double for循环来计算各个值。检查每个数组的第n个索引并计算值,其中i是从0到数组长度(基本上,检查所有索引)。你应该得到你的计算结果。下面仅使用2个阵列:

js prettyprint-override">let array0 = [false,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false,true,true,true,true,true,false,true,true,true,true,false,false]
let array1 = [true,true,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,true,true,true,true,false,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true]
let newArr = [array0,array1];
let ans = [];

for(let i = 0 ; i < array1.length; i++){
  let val = true;
  for(let j = 0 ;j < newArr.length; j++){
      val = val && newArr[j][i];
      if(!val) break;
  }
ans.push(val);
}
console.log(ans);
董喜
2023-03-14

您可以转换数组并映射所有具有真实值的项。

const
    array0 = [false, true, false, true, true],
    array1 = [true, true, false, false, true],
    array2 = [false, true, true, false, true],
    array3 = [true, true, true, true, true],
    transpose = (r, a) => a.map((v, i) => [...(r[i] || []), v]),
    result = [array0, array1, array2, array3]
        .reduce(transpose, [])
        .map(a => a.every(Boolean))

console.log(result);
 类似资料:
  • 我有一个简单的javascript问题,我真的需要一些帮助!我正在尝试弄清楚如何在数组之间比较元素,以及在下一个循环中再次比较较大的元素。假设我们有数组A和数组B。 我的问题是,在比较索引处的元素之后,我希望在下一个循环周期中比较较大的元素。 如果A=[5,7,4],B=[2,8,5] 在第一个循环中,5与2进行比较,2较小,因此会发生一些事情。在下一个循环周期中,我希望5与8进行比较,而对于现在

  • 本文向大家介绍JavaScript 数组比较,包括了JavaScript 数组比较的使用技巧和注意事项,需要的朋友参考一下 示例 为了进行简单的数组比较,您可以使用JSON stringify并比较输出字符串: 注意:这仅在两个对象都可以JSON序列化并且不包含循环引用的情况下起作用。可能会抛出TypeError: Converting circular structure to JSON 您可以

  • 我正在制作一个输血游戏。我有2个数组列表。一个有献血者的血型和姓名,第二个有接受者的血型和姓名。所有的名字我都会得到用户的输入并将它们存储在一个数组中(接受者数组列表更大)。 我不知道如何使用布尔2D数组将两个数组列表进行比较(应该返回true或false)。例如,在所有捐赠者和接受者输入姓名和血型后,程序应该告诉他们是否匹配。 我知道下面的代码是错误的,但我不知道怎么做。

  • 问题内容: 要求“比较应为或”。 但是,如果我遵循此规则,则会得到不同/错误的结果。为什么? 问题答案: 该建议仅适用于测试值的“真实性”的语句。是另一种野兽。 请注意,这始终是因为是数组而不是布尔值,并且执行简单的引用相等性测试(例如,仅;例如)。

  • 问题内容: 如果它具有另一个数组的元素,是否还有其他更好的方法可以从一个数组中删除重复项呢,它工作得很好。 问题答案: 或者,随着ES6的推出:

  • js 比较两个数组,并进行替换掉? 需要根据arr2对象里面的val数组里面的值[200, 300, 500]去匹配arr1数组下sk数组里面的Value的值,如果arr1数组下sk数组里面的Value的值和arr2对象里面的val数组里面的值相等就替换Name,把arr2 对象的name 赋值到sk数组里面的Name 期望得到 这样写了调试了还没效果。麻烦大佬们帮我看看