从 JavaScript 中的数组中删除空对象
从数组中删除空对象:
- 使用 Array.filter() 方法遍历数组。
- 将每个对象传递给 Object.keys() 方法并检查键的长度是否不等于 0。
- filter 方法将返回一个不包含空对象的新数组。
const arr = [{}, {id: 1}, {}, {id: 2}, {}];
const results = arr.filter(element => {
if (Object.keys(element).length !== 0) {
return true;
}
return false;
});
// ?️ [{id: 1}, {id: 2}]
console.log(results);
我们传递给 Array.filter 方法的函数被数组中的每个元素(对象)调用。
如果函数返回真值,则 filter 方法将该元素添加到结果数组。
Object.keys 方法返回一个包含对象键的数组。
console.log(Object.keys({})); // ?️ []
console.log(Object.keys({id: 1})); // ?️ ['id']
如果对象没有键值对,则该方法返回一个空数组。
如果它至少有 1 个键值对,我们只返回 true 并将对象添加到结果数组。
console.log(Object.keys(0).length); // ?️ 0
console.log(Object.keys([]).length); // ?️ 0
如果我们的数组包含对象以外的类型,请使用以下方法仅从数组中删除空对象。
const arr = [{}, {id: 1}, 'a', 0, {}, []];
const results = arr.filter(element => {
if (
typeof element === 'object' &&
!Array.isArray(element) &&
Object.keys(element).length === 0
) {
return false;
} else {
return true;
}
});
// ?️ [{id: 1}, 'a', 0, []]
console.log(results);
我们使用 &&(与)运算符来指定必须满足所有条件才能运行 if 块。
我们首先检查元素是否有对象类型,但这还不够,因为 JavaScript 数组也有对象类型。
console.log(typeof []) // ?️ 'object'
然后我们检查元素不是数组并且对象是空的。
在所有其他情况下,数组元素不是空对象并被添加到新数组中。
大多数情况下,在数组中存储多种不同类型是一种反模式。 如果我们需要在同一个数组中存储不同的类型,很可能是做错了什么。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。