js中如何从数组中删除一个对象的数据(从 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 并将对象添加到结果数组 。
请注意 ,如果使用空数组 [] 或数字 0 调用 Object.keys(obj).length 方法将返回 0 。
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然后我们检查元素不是数组并且对象是空的。
如果满足所有这些条件 ,我们就知道我们有一个空对象 ,不应将其添加到结果数组中,因此我们返回 false 。
在所有其他情况下 ,数组元素不是空对象并被添加到新数组中 。
大多数情况下 ,在数组中存储多种不同类型是一种反模式。 如果我们需要在同一个数组中存储不同的类型,很可能是做错了什么 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!