![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.4ベストアンサー
- 回答日時:
ES5/JS1.8 に限定ですが、以下がお勧めです。
var counter = function(a, b){ return b !== null? a+1: a };
if ([hoge1, hoge2, hoge3, hoge4].reduce(counter, 0) >= 2) {
// null でない変数が二つ以上の処理
}
昔の環境でも jQuery などを使えば類似の記述ができます。
回答ありがとうございました
>reduce
・初めて知りました
・これは便利ですね
・色々応用が利きそうだし、これから使っていこうと思いましたー
No.3
- 回答日時:
「nullではない変数が2つ以上」ならば、素直にnull出ない変数の数を数えて、その数で分岐とか。
int iNotNull = 0;
if (hoge1!=null) {iNotNull++;}
if (hoge2!=null) {iNotNull++;}
if (hoge3!=null) {iNotNull++;}
if (hoge4!=null) {iNotNull++;}
if (2<=iNotNull) {処理;}
--
if (hoge1!=null && hoge2!=null) || (hoge1!=null && hoge3!=null) || …
とかって書き方もありますが、この仕様の書きっぷりだと「2つ以上→3つ以上」なんかもあり得るし、変数増減しても修正しやすいし。
回答ありがとうございました
>素直にnull出ない変数の数を数えて、その数で分岐
・そうですね
・質問した時点では難しく考えていましたが、実際にコードを見てみたら、素直に書いた方が早いかも、と思いました
No.2
- 回答日時:
1つずつnullかどうかを判断してカウントを取るか、
もしくはとにかく一発で取りたいのか?と思って、
こんなのを作ってみました。
<html>
<head>
<script type="text/javascript">
function OnLoad() {
var hoge1 = null;// ビット処理で、trueは1
var hoge2 = null;// ビット処理で、trueは2
var hoge3 = "a";// ビット処理で、trueは4
var hoge4 = null;// ビット処理で、trueは8
var result = ((hoge1 != null) | (hoge2 != null) << 1 | (hoge3 != null) << 2 | (hoge4 != null) << 3);
if (result <= 2 || result == 4 || result == 8) {
alert("null以外が1つしかない:" + result);
} else {
alert("null以外が2つ以上ある:" + result);
}
}
</script>
</head>
<body onload="OnLoad()">
</body>
</html>
2進数表現での対象・対象外
0000× 0
0001× 1
0010× 2
0011○ 3
0100× 4
0101○ 5
0110○ 6
0111○ 7
1000× 8
1001○ 9
1010○ 10
1011○ 11
1100○ 12
1101○ 13
1110○ 14
1111○ 15
回答ありがとうございました
>ビット処理で
・発想にびっくりしました
・こういう考え方もあるのか、と思いました
・面白かったです
No.1
- 回答日時:
こんにちは。
一つずつカウントしても良いと思いますが、面倒ですので以下のような関数を作成しました。
checkにチェックしたい変数をつらつら渡してあげて2以上nullではない変数があった場合はtrueを返します。
第一引数はnull以外の変数の数を指定できます。
(1にすれば1つ以上のnull以外でtrueを返します)
var hoge1 = null;
var hoge2 = 3;
var hoge3 = 3;
var hoge4 = null;
alert ( check( 2, hoge1, hoge2, hoge3, hoge4 ) );
function check() {
var cntNull = 0;
for ( var i = 1; i < arguments.length + 1; i ++ ) {
if ( arguments[i] != null ) {
cntNull ++;
}
}
return cntNull >= arguments[0];
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CAD・DTP HO CADの活用について 1 2023/07/19 16:31
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- PHP PHPSpreadsheetを使って関数を繰り返し埋め込みたい 1 2023/05/24 11:33
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- バッテリー・充電器・電池 NA01(GlocalMe U3X)の互換バッテリー探しています 1 2022/10/16 15:05
- C言語・C++・C# c言語 1 2022/11/09 13:05
- プラモデル・鉄道模型・模型製作 鉄道模型コレクターさんの、一押し電車は、何ですか? 今から鉄道模型始めようと思いまして。 HOゲージ 7 2023/06/18 19:26
- 電気工事士 平均照度の計算あっているか教えてください。忙しいと思いますがよろしくお願いします。 現地測定し数値を 1 2022/09/29 07:37
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
getStringの値がNULLの時の処理
-
BOOL値を逆にしたい
-
配列にnullを代入すると、null...
-
逆コンパイルの見方について(...
-
Java配列でNullPointerExceptio...
-
gas カレンダー祭日設定でエラー
-
Javascript エラーメッセージが...
-
条件分岐 … nullではない変数が...
-
例外でBeanUtils.populateが、...
-
onbeforeunloadでnullを返すとI...
-
eclipseでoracle接続時のエラー...
-
JavaBeansにDBの値を格納
-
if文を通らない
-
JSPでの画面表示の方法
-
javascript if文
-
C言語のポインターに関する警告
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションのrepla...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
BOOL値を逆にしたい
-
Java配列でNullPointerExceptio...
-
配列にnullを代入すると、null...
-
getStringの値がNULLの時の処理
-
eclipseでoracle接続時のエラー...
-
C# ListBoxのインデックスの値...
-
gas カレンダー祭日設定でエラー
-
例外でBeanUtils.populateが、...
-
jsp/Servletの動的に増えるフォ...
-
逆コンパイルの見方について(...
-
Stringを返す getText()メソッ...
-
C#でラジオボタンとコンボボッ...
-
onbeforeunloadでnullを返すとI...
-
JSPで複数のSQL実行につ...
-
JSPによる画面間のパラメータの...
-
Javaでboolean型を使ってのうる...
-
入力された文字列の制限
-
JavaBeansにDBの値を格納
-
この世で連日正規表現について...
おすすめ情報