用js 封装一个删除对象中空值属性的方法
时间: 2023-10-12 12:05:04 浏览: 44
好的,以下是代码:
```
function removeEmpty(obj) {
for (var key in obj) {
if (obj.hasOwnProperty(key) && (obj[key] === null || obj[key] === undefined || obj[key] === "")) {
delete obj[key];
}
}
return obj;
}
```
你觉得怎么样?
相关问题
js删除对象中的空值
在JavaScript中,我们可以使用递归函数遍历对象的属性,并将属性值为空的属性删除。
首先,我们可以创建一个名为`removeEmpty`的递归函数来遍历对象的属性。这个函数将接受一个对象作为参数并返回一个新的对象,其中删除了空值属性。
在遍历对象的属性时,我们可以使用`Object.keys`方法获取对象的所有属性,并通过`forEach`方法遍历每个属性。对于每个属性,我们可以使用`typeof`操作符检查属性值的类型。如果属性值是对象类型并且不为空,我们可以使用递归调用`removeEmpty`函数获取新的非空对象并将其赋值给当前属性。如果属性值不是对象类型,我们可以检查是否为空字符串、null或undefined,并将满足条件的属性删除。
下面是实现这个递归函数的代码:
```
function removeEmpty(obj) {
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object' && obj[key] !== null) {
obj[key] = removeEmpty(obj[key]);
} else {
if (obj[key] === '' || obj[key] === null || obj[key] === undefined) {
delete obj[key];
}
}
});
return obj;
}
```
使用这个函数可以删除对象中的空值属性。例如,对于以下对象:
```javascript
const obj = {
name: 'John',
age: null,
address: {
street: '123 Main St',
city: '',
country: 'USA'
},
hobbies: []
};
```
调用`removeEmpty(obj)`后,将返回以下对象:
```javascript
{
name: 'John',
address: {
street: '123 Main St',
country: 'USA'
}
}
```
上述代码将删除属性`age`,`address.city`和`hobbies`,因为它们的值为空。
过滤js对象数组中属性空值
可以使用JavaScript的`filter()`和`Object.values()`方法来过滤属性为空的对象。具体实现如下:
```javascript
let arr = [
{ name: 'Alice', age: 20 },
{ name: '', age: 25 },
{ name: 'Bob', age: null },
{ name: 'Charlie', age: undefined }
];
let result = arr.filter(obj => !Object.values(obj).some(val => val === null || val === undefined || val === ''));
console.log(result);
// 输出 [{ name: 'Alice', age: 20 }]
```
代码解释:
1. `filter()`方法用于过滤数组中的元素,返回一个新数组,其中包含满足指定条件的所有元素。
2. `Object.values()`方法返回对象中所有属性值组成的数组。
3. `some()`方法用于检查数组中是否存在满足指定条件的元素,只要有一个元素满足条件即返回`true`。
4. 在这个例子中,我们使用`some()`方法检查对象中的属性值是否为空,如果存在为空的属性,那么`some()`方法返回`true`,`filter()`方法就会过滤掉该对象,最终返回一个不包含空属性的对象数组。