我有一个像这样的javascript对象:
filters = { loaderId:1111, search : '', postCategory: '', sortBy:'' }
我想删除空白属性(空字符串,未定义,null),但保留属性为0。
我该如何用javascript做到这一点,我本来可以用lodash omit来做到这一点,但现在已经弃用了,谢谢!!
答案 0 :(得分:1)
你可以
function clean(obj) {
for (let propName in obj) {
if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {
delete obj[propName];
}
}
}
或者类似
const removeEmpty = obj => {
Object.keys(obj).forEach(key => (obj[key] == null || obj[key] == undefined || obj[key] === '') && delete obj[key]);
};
答案 1 :(得分:0)
您可以使用此功能:
function clearEmpty(obj) {
return Object.keys(obj).reduce((acc, key) => {
if(obj[key] !== null && obj[key] !== undefined && obj[key] !== '') {
acc[key] = obj[key];
}
return acc;
}, {});
}
我将返回一个新对象,而不是变异原始对象,以防您可能需要保留它。
答案 2 :(得分:0)
var filters = {
loaderId: 1111,
search: 0,
postCategory: "",
sortBy: ""
};
for (var prop in filters) {
if (!filters[prop] && filters[prop] !== 0)
delete filters[prop];
}
console.log(filters)
答案 3 :(得分:0)
答案 4 :(得分:0)
单行解决方案:
Object.fromEntries(Object.entries(input).filter(x => x[1] !==''));
自
Object.entries =
[
[ 'loaderId', 1111 ],
[ 'search', '' ],
[ 'postCategory', '' ],
[ 'sortBy', '' ]
]
以下返回['loaderId',1111]
Object.entries(input).filter(x => x[1] !=='')
并在下面将其转换为对象:
{ 'loaderId' : 1111 }