我有以下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
。
如何正确使用此功能?
答案 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
),而不是从项目本身删除。