JavaScript объединяет несколько логических массивов и OR || оператор

1

Я хочу объединить этот массив с помощью или || оператор

[[true,false,false],[false,false,false],[false,false,true]]

так что выход

[true,false,true]

возможно ли это с помощью карты или сокращения или аналогичного?

Изменение: Извините за непонятный вопрос - да, это было для вертикального объединения всех вспомогательных массивов. Итак, следующий ввод:

[[true,false,false],[false,false,false],[false,false,true],[false,false,true]]

будет производить тот же результат:

[true,false,true]
  • 1
    Каково логическое условие для слияния?
  • 2
    1. Хотите ли вы, чтобы первым true было a[0][0] || a[0][1] || a[0][2] или a[0][0] || a[1][0] || a[2][0] ? 2. Что вы пытались решить проблему?
Показать ещё 2 комментария
Теги:
arrays

3 ответа

2
Лучший ответ

Вы можете уменьшить массивы с отображением одинаковых значений индекса.

var array = [[true, false, false], [false, false, false], [false, false, true]],
    result = array.reduce((a, b) => a.map((c, i) => b[i] || c));

console.log(result);
4

Вам действительно не нужно || когда вы используете some:

var array = [[true, false, false], [false, false, false], [false, false, true]];

var result = array[0].map( (_, i) => array.some(a => a[i]));

console.log(result);
  • 0
    вы могли бы использовать Boolean качестве cb.
  • 0
    Какое аккуратное горизонтальное решение для слияния - Спасибо. Но я хотел сделать вертикальное слияние.
Показать ещё 1 комментарий
0

вы можете сделать это следующим образом

let arr = [[true,false,false],[false,false,false],[false,false,true]];

arr = arr.map(function(element){
    return element.reduce(function(a, b){
        return (a|b);
    })
})

console.log(arr);
  • 0
    Зависит от того, каким образом они хотят это сделать. Есть два, которые соответствуют вводу и выводу вопроса.
  • 0
    что я сделал вывод, что он хочет ИЛИ все подмассивы и сделать новый
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню