Javascript 从数组中删除空属性
有人能帮忙吗Javascript 从数组中删除空属性,javascript,object,Javascript,Object,有人能帮忙吗 良好地处理对象 但代码在空数组中中断 removemptyproperty(数据); console.log(数据);=>{questionDetails:[{trees:123},]} 但是预期的结果应该是{questionDetails:[{trees:123}]},我的代码在空数组中中断您可以采取一种方法,函数为调用范围返回一个布尔值以删除属性或元素 检查值是否为对象 如果value是不需要的值,则返回true,对于其他值返回false 检查value是否为数组 从
removemptyproperty(数据);
console.log(数据);=>{questionDetails:[{trees:123},]}
但是预期的结果应该是{questionDetails:[{trees:123}]},我的代码在空数组中中断您可以采取一种方法,函数为调用范围返回一个布尔值以删除属性或元素
值
是否为对象
- 如果
是不需要的值,则返回value
,对于其他值返回true
false
value
是否为数组
- 从末尾开始迭代数组,因为会使用较大的索引更改元素的索引。较小的指数不受影响
- 使用元素调用函数
,如果必须删除元素,则调用函数removemptyproperty
splice
- 对于空数组,返回
true
- 获取密钥并迭代它们
- 使用值调用函数
,如果removemptyproperty
,则删除属性true
- 对于没有自己属性的对象,返回
true
const
removeEmptyProperties=值=>{
如果(!value | | typeof value!=“object”){
返回[undefined,null,''。包括(值);
}
if(数组.isArray(值)){
设i=value.length;
而(i--)if(removemptyproperty(value[i])value.splice(i,1);
return!value.length;
}
Object.keys(value).forEach(k=>{
如果(删除mptyproperty(值[k]),则删除值[k];
});
return!Object.keys(value).length;
};
let data={questionDetails:[{},{id:null,foo:0,bar:undefined}]};
删除mptyproperty(数据);
控制台日志(数据);
data.questionDetails[0]。foo='';
删除mptyproperty(数据);
控制台日志(数据)代码>只需使用正确的工具。。。删除对象的属性。它不用于“删除”数组中的条目。。
const removeEmptyProperties = (obj) => {
obj = Array.isArray(obj) ? obj.filter(val => val !== 'null' || val !== 'undefined') : obj;
Object.keys(obj).forEach((key) => {
//recursive for nested objects
if (obj[key] && typeof obj[key] === 'object')
removeEmptyProperties(obj[key]);
//remove empty properties
else if (
typeof obj[key] !== 'boolean' &&
(obj[key] == null || obj[key] == '')
)
delete obj[key];
//remove empty objects
if (
typeof obj[key] !== 'boolean' &&
typeof obj[key] === 'object' &&
Object.keys(obj[key]).length == 0
)
delete obj[key];
});
};
let data = {
questionDetails: [
{
trees: 123,
template: {
id : null
}
},
{
trees: 123,
},
],
};
delete data.questionDetails[1];
removeEmptyProperties(data);
console.log(data); => { questionDetails: [ { trees: 123 }, <1 empty item> ] }