从对象中删除空值或空值

时间:2017-04-05 13:25:58

标签: javascript jquery arrays json object

我有以下JavaScript对象:

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

我想删除值为空或null的所有键/值对。以下似乎没有按预期工作:

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

控制台日志返回以下错误:Uncaught TypeError: Cannot read property 'length' of undefined

如何正确使用此功能?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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];

您正尝试从item1删除属性(例如items),而不是从项目本身删除。