13

配列があり、その配列に値のみが含まれている場合、単純な非ループ テストが必要nullです。空の配列も、null 値のみを持つものとしてカウントされます。

この問題を説明する別の方法は、配列に null 以外の値が少なくとも 1 つあるかどうかをテストすることだと思います。

そう:

Good: [ null, null, null ]
Good: []
Bad:  [ null, 3, null ]
4

3 に答える 3

5
var arrayData1 = [null, null, null];
var arrayData2 = [];
var arrayData3 = [null, 3, null];
var arrayData4 = [3];

function isNull(inputArray) {
    if (inputArray.length) {
        var currentElement = inputArray[0];
        for (var i = 1, len = inputArray.length; i < len && currentElement === null; i += 1) {
            currentElement = currentElement || inputArray[i];
        }
        if (currentElement !== null) {
            return false;
        }
    }
    return true;
}

console.log(isNull(arrayData1));
console.log(isNull(arrayData2));
console.log(isNull(arrayData3));
console.log(isNull(arrayData4));

出力

true
true
false
false

編集1:そして、ここに最も効率的な解決策があります(user2736012が提案)。このソリューションは、KISSの原則を適用します。シンプル保ちなさい、シリー。_

function isNull(inputArray) {
  for (var i = 0, len = inputArray.length; i < len; i += 1)
    if (inputArray[i] !== null)
      return false;
  return true;
}

パフォーマンス結果: http://jsperf.com/so-q-19337761/6

于 2013-10-12T18:58:46.907 に答える