2017-09-09 8 views
1

または||を使用してこの配列をマージしたいですか?オペレータJavaScriptは複数のブール配列をマージし、OR ||演算子

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

出力は

[true,false,true] 

であるように、このマップで可能か減らすか、または類似しているのですか?

編集:不明な質問を申し訳ありません。はい、すべてのサブアレイを垂直方向にマージしました。

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);

+1

マージするための論理的な条件は何ですか? – brk

+2

1.最初に 'true'を' a [0] [0] ||にしたいですか? a [0] [1] || a [0] [2] 'または' a [0] [0] || a [1] [0] || a [2] [0] '? 2.あなたは問題を解決しようとしましたか? –

+1

不明瞭な質問のおかげで、あなたは今、両方の方法で回答を得ています。 :-) [marvel308's](https://stackoverflow.com/a/46132127/157247)最初のものが必要な場合は、[Nina's](https://stackoverflow.com/a/46132147/157247)秒。 –

答えて

2

あなたは減らすことができ

[true,false,true] 
0

では、次の方法でそれを行うことができます。したがって、次の入力:

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

は、同じ出力を生成します配列に同じインデックス値をマッピングします。あなたがsomeを使用する場合

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);

+0

どのような方法でそれをしたいのかによって異なります。質問の入力と出力にふさわしいのは2つあります。 –

+0

私が推論したのは、彼がすべてのサブアレイをORして新しいサブアレイを作成したいということでした。 – marvel308

+1

@ marvel308は明白です。これは論理和ではなく、ビット単位でORされます – vol7ron

4

あなたは本当に||を必要としません:

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

どのようなきちんとした水平マージソリューション - ありがとう。しかし、私は垂直マージをすることを意味しました。 – Soth

+0

ああ、はい、私は垂直マージを行うように更新しました。 – trincot

関連する問題