配列があり、その配列に値のみが含まれている場合、単純な非ループ テストが必要null
です。空の配列も、null 値のみを持つものとしてカウントされます。
この問題を説明する別の方法は、配列に null 以外の値が少なくとも 1 つあるかどうかをテストすることだと思います。
そう:
Good: [ null, null, null ]
Good: []
Bad: [ null, 3, null ]
配列があり、その配列に値のみが含まれている場合、単純な非ループ テストが必要null
です。空の配列も、null 値のみを持つものとしてカウントされます。
この問題を説明する別の方法は、配列に null 以外の値が少なくとも 1 つあるかどうかをテストすることだと思います。
そう:
Good: [ null, null, null ]
Good: []
Bad: [ null, 3, null ]
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