const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
}
如何从一个对象中删除空值的键?
以下是我尝试过的方法,但无法完成它...
Object.entries(obj).filter(item => item !== "");
const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
}
如何从一个对象中删除空值的键?
以下是我尝试过的方法,但无法完成它...
Object.entries(obj).filter(item => item !== "");
你使用filter
时,返回的是一个Array
而不是一个Object
。
使用reduce
会更好,因为它可以返回你想要的任何类型。
const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
}
// creates a new object, without empty keys
console.log(
Object.entries(obj).reduce((acc, [k, v]) => v ? {...acc, [k]:v} : acc , {})
)
// or mutate the original object
console.log(
Object.keys(obj).reduce((acc, k) => (!obj[k] && delete acc[k], acc), obj),
obj // print original to prove it was mutated
)
或者是另一种简单的变异:
Object.keys(obj).forEach(k => !obj[k] && delete obj[k])
const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
}
for(let k in obj)
if( obj[k] == '' )
delete obj[k]
console.log(obj)
如果您想缩短它,您可以将其编写为单行代码 :p
for(let k in obj) obj[k] == '' && delete obj[k]
键 永远不会有 0
作为值,您可以执行以下操作:
for(let k in obj) !obj[k] && delete obj[k]
for..in 循环遍历整个原型链,这几乎永远不是你想要的...
- Nikhil Nanjappa从一个对象中删除所有的空值和Null值
const obj = {
name: {
first: "Max",
middle: "",
last: "Holder"
},
age: 45,
address: null
}
function removeEmptyOrNull(obj){
return Object.fromEntries(
Object.entries(obj)
.filter(([_, v])=> v!== null && v.length !== 0)
.map(([k, v])=>[k, v === Object(v)?removeEmptyOrNull(v):v])
)
}
console.log(removeEmptyOrNull(obj))
item
是一个包含键和值的数组。因此,返回数组中第二个元素是否不是''
,并将其转换为对象使用`Object.fromEntries:`
const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
};
console.log(
Object.fromEntries(
Object.entries(obj)
.filter(item => item[1] !== "")
)
);
这是一个使用forEach
的例子。我认为在删除对象元素时使用delete
是最明智的方法:
const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
};
Object.keys(obj).forEach(key => {
if(!obj[key])
delete obj[key]
});
console.log(obj)
const obj = {
a: '123',
b: '124',
c: '1242414',
d: '',
e: '',
f: ''
}
const o = Object.entries(obj);
console.log(o);
const f = o.filter(keyValues=>{
return keyValues[1]!==""
});
console.log(f);
const filtered = Object.fromEntries(f);
console.log(filtered)