Viết hàm gộp mảng 2 chiều boolean thành mảng 1 chiều bằng phép AND (&&) trên các cột tương ứng.
Ví dụ
Đầu vào: [[true,false,false], [false,false,false], [false,false,true]]
Cột 0: true && false && false = false
Cột 1: false && false && false = false
Cột 2: false && false && true = false
Kết quả: [false, false, false]
Giải pháp
Mã triển khai dùng reduce:
const arr = [[true,false,false],[false,false,false],[false,false,true]];
const andMerge = (arr = []) =>
arr.reduce((acc, val) => {
val.forEach((bool, i) => {
acc[i] = (acc[i] ?? true) && bool;
});
return acc;
}, []);
console.log(andMerge(arr));
Kết quả
Đầu ra trong console:
[false, false, false]
Sửa lỗi code gốc: acc[ind] = acc[ind] && bool || false sai logic. Cần khởi tạo acc[i] = true.