2017-04-05 12 views
1

から空またはnull値を削除:は、私は、次のJavaScriptオブジェクトを持つオブジェクト

var items = [ 
    { 
     item1: '', 
     item2: 'foo' 
    }, 
    { 
     item1: 'bar' 
     item2: '' 
    } 
]; 

私は値が空またはnullのいずれかであるすべてのキー/値のペアを削除したいです。以下は、意図したとおりに機能していないと思われる:Uncaught TypeError: Cannot read property 'length' of undefined

$.each(items, function(i,v){ 
    $.each(items[i], function(i2, v2){ 
     if (v2 === "" || v2 === null){ 
      delete items[i2]; 
     } 
    }); 
}); 
console.log(items); 

コンソールログには、次のエラーを返します。

この作品を正しく取得するにはどうすればよいですか?

答えて

2

jQueryの.eachを用いて溶液の場合:

var items = [{ 
 
    item1: '', 
 
    item2: 'foo' 
 
}, { 
 
    item1: 'bar', 
 
    item2: '' 
 
}]; 
 

 
$.each(items, function(i, v) { 
 
    $.each(v, function(i2, v2) { 
 
    if (v2 === "" || v2 === null) { 
 
     delete v[i2]; 
 
    } 
 
    }); 
 
}); 
 
console.log(items);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

あなたdelete一部はここにすべて間違っていた:

delete items[i2]; 

項目自体ではなくitemsからプロパティ(たとえばitem1)を削除しようとしています。

2

プレーンJavaScriptを使用すると、配列とすべてのキーを繰り返して、空の文字列またはnullの値をチェックし、ifを削除できます。

var items = [{ item1: '', item2: 'foo' }, { item1: 'bar', item2: '' }]; 
 

 
items.forEach(function (o) { 
 
    Object.keys(o).forEach(function (k) { 
 
     if (o[k] === '' || o[k] === null) { 
 
      delete o[k]; 
 
     } 
 
    }); 
 
}); 
 

 
console.log(items);

+0

私はこれを不必要に過度に複雑化しようとしたと思いますが、あなたのソリューションははるかに優れています。 – Ryan

関連する問題