我想要创建一个删除空属性和未定义属性的方法。
要做到这一点:
我把普通的对象转换成表 在上面循环 如果存在空或未定义的属性,则对属性进行筛选。
但问题是,我并不是来用新的价值观来重构我的目标。让我们来看看:
var req = {
adtForm1: {
firstName: 'John',
lastName: undefined,
middleName: ''
},
adtForm2: {
firstName: null,
lastName: 'Doe',
middleName: ''
}
};
removeUndefinedFormsAttributes = (somesForms) => {
const forms = Object.values(somesForms);
const formsUpdate = {};
forms.forEach(item => {
const formFields = Object.values(item);
formFieldsKeys = Object.keys(item);
const formFiltered = formFields.filter(field => { return field !== null && field !== undefined; });
console.log("formFiltered", formFiltered);
})
console.log(somesForms)
return forms;
};
removeUndefinedFormsAttributes(req)
正如我们在代码段中所看到的,formFiltered更改了好的值,但我需要返回与somesForms相同的对象。这就是我需要的:
expectedValue = {
adtForm1: {
firstName: 'John',
middleName: ''
},
adtForm2: {
lastName: 'Doe',
middleName: ''
}
}我知道我需要使用减()函数和key()函数,但实际上我不知道如何使用。我真的很感激你的帮助。
发布于 2019-04-04 16:51:49
如果这些属性不是null或未定义,您可以简单地将它们克隆到一个新对象中。
非常简单的代码,通过obj递归循环,并且只插入有效的属性:
function clearObject(object) {
if (typeof(object) != "object") return false;
const clean_object = {};
for (let k in object) {
let item = object[k];
if (item === null || item === undefined) continue;
clean_object[k] = clearObject(item) || item;
}
return clean_object;
}https://stackoverflow.com/questions/55520988
复制相似问题