Reputation: 1159
I'm curious how I could compare these array's, bare in mind this is an example, it's not limited to 4 array's, as this could be more or less depending on user selection)
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 ]
The end goal is to get a new array with a true or false value based on comparison/validation of all of the above array's, a true value should only be set if all 4 array's have a true value in that index position, and a false if of them or not for example:
Array | result | Array | result | Array | result |
---|---|---|---|---|---|
array0[0] | false | array0[1] | true | array0[2] | false |
array1[0] | true | array1[1] | true | array1[2] | false |
array2[0] | true | array2[1] | true | array2[2] | true |
array3[0] | true | array3[1] | true | array3[2] | false |
result | false | true | false |
let resultArray = [false, true, false, false, /* etc */]
Hope I have explained this correctly.
Upvotes: 0
Views: 64
Reputation: 386746
You could transpose the array and map all items having truthy values.
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);
Upvotes: 2
Reputation: 2247
Since all your arrays have same length I guess you could simply do that:
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 result = Array.from({
length: array0.length
}).map((_, i) => array0[i] && array1[i] && array2[i] && array3[i])
console.log(result)
Upvotes: 1
Reputation: 4227
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)
Upvotes: 1
Reputation: 20626
I think you should create an array containing all your arrays. Then you will probably need a double for loop to calculate individual values. Check the nth index for every array and compute the value, where i is from 0 to the length of array (Basically, do the check for all the indices). You should get your computed result. Below is using only 2 arrays:
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);
Upvotes: 1