特定の状況では、配列構造にundefined
または一般的にfalsyの値があることがあります。たとえば、データベースやHTML構造などの不明なソースからデータを読み込んで入力する場合。好む
var data = [42, 21, undefined, 50, 40, undefined, 9]
そのような配列をループして要素を操作するときに問題が発生する可能性があるため、undefined
(偽の値)を削除するベストプラクティスは何ですか?
ここで_Array.prototype.filter
_を使用するのは明らかです。したがって、未定義の値のみを削除するには、
_var data = [42, 21, undefined, 50, 40, undefined, 9];
data = data.filter(function( element ) {
return element !== undefined;
});
_
偽の値(0やnullなど)をすべて除外する場合は、代わりに_return !!element;
_を使用できます。
しかし、Boolean
コンストラクター関数、またはNumber
コンストラクター関数をそれぞれ_.filter
_に渡すだけで、少しエレガントになります。
_data = data.filter( Number );
_
それはこのインスタンスで仕事をし、一般的にfalsy値を削除するために、
_data = data.filter( Boolean );
_
Boolean()
コンストラクターはtruthyの値でtrue
を、任意のfalsyの値でfalse
を返すため、これは非常にきちんとしたオプション。
ラムダを使用したインライン
result.filter(item => item);
Lodash compact
メソッドを使用して、null
、undefined
、および''
を削除できます。
_.compact(data)
Array.prototype.reduce()
は、配列から条件によって要素を削除するために使用できますが、1回の反復で必要に応じて要素の追加の変換を行います。
サブ配列をサポートして、配列からundefined
値を削除します。
function transform(arr) {
return arr.reduce((memo, item) => {
if (typeof item !== "undefined") {
if (Array.isArray(item)) item = transform(item);
// We can transform item here.
memo.Push(item);
}
return memo;
}, []);
}
let test1 = [1, 2, "b", 0, {}, "", , " ", NaN, 3, undefined, null, 5, false, true, [1, true, 2, , undefined, 3, false, ''], 10];
console.log(transform(test1));
jsfiddle.net/bjoy4bcc/ で試してみてください
var a = ["3","", "6"];
var b = [23,54,56];
var result = [];
for (var i=0;i<a.length;++i) {
if (a[i] != "") {
result[i] = b[i];
}
}
result = result.filter(function( element ) {
return element !== undefined;
});
console.log(result);
var arr1 = [NaN、0、15、false、-22、 ''、undefined、47、null];
var array1 = arr1.filter(function(e){return e;});
document.write(array1);
単一行ans