如何从JavaScript数组中删除空对象

 更新时间:2023年05月06日 15:36:50   作者:迹忆客  
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);

JavaScript 中的数组中删除空对象

我们传递给 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);

JavaScript 中的数组中删除空对象2

我们使用 &&(与)运算符来指定必须满足所有条件才能运行 if 块。

我们首先检查元素是否有对象类型,但这还不够,因为 JavaScript 数组也有对象类型。

console.log(typeof []) // 👉️ 'object'

然后我们检查元素不是数组并且对象是空的。

如果满足所有这些条件,我们就知道我们有一个空对象,不应将其添加到结果数组中,因此我们返回 false。

在所有其他情况下,数组元素不是空对象并被添加到新数组中。

大多数情况下,在数组中存储多种不同类型是一种反模式。 如果我们需要在同一个数组中存储不同的类型,很可能是做错了什么。

补充:特殊位置删除

当我们只是需要删除数组的首尾数据的时候,也可以通过js的pop或者shift方法实现,这其实是两对对应的操作:添加与删除。

push 与pop

通过push我们可以将元素添加到数组末尾,通过pop将末尾元素去除并返回。

const arr = [1, 2, 3, 4, 5, 6]
// 添加元素到数组末尾
arr.push(7) // arr: [1, 2, 3, 4, 5, 6, 7]
// 取出数组末尾元素并返回
const pop_res = arr.pop() // arr: [1, 2, 3, 4, 5, 6], pop_res: 7

unshift与shift

通过unshift可以将元素添加到数组首部,通过shift可去除数组头部元素并返回。

// 将元素添加到数组开头
arr.unshift(0) // arr: [0, 1, 2, 3, 4, 5, 6]
// 取出数组开头元素并返回
const sft_res = arr.shift() // arr: [1, 2, 3, 4, 5, 6], sft_res = 0

总结

到此这篇关于如何从JavaScript数组中删除空对象的文章就介绍到这了,更多相关JS数组删除空对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文教你用JavaScript制作个简单的大转盘游戏

    一文教你用JavaScript制作个简单的大转盘游戏

    日常生活中,我们经常会见到形形色色的抽奖活动,例如九宫格、大转盘等等……本文就来教大家如何利用JavaScript制作个简单的大转盘游戏,感兴趣的可以了解一下
    2023-02-02
  • ES6新特性三: Generator(生成器)函数详解

    ES6新特性三: Generator(生成器)函数详解

    这篇文章主要介绍了ES6新特性之Generator(生成器)函数,简单分析了Generator(生成器)函数的功能、定义、调用方法并结合实例形式给出了相关使用技巧,需要的朋友可以参考下
    2017-04-04
  • 微信小程序底部tabBar遮挡内容的简单处理方法

    微信小程序底部tabBar遮挡内容的简单处理方法

    几乎每个app都会用到底部导航的,相对于小程序而言自然也是如此了,这篇文章主要给大家介绍了关于微信小程序底部tabBar遮挡内容的简单处理方法,需要的朋友可以参考下
    2021-08-08
  • javascript跨域的4种方法和原理详解

    javascript跨域的4种方法和原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
    2014-04-04
  • 用Javascript来生成ftp脚本的小例子

    用Javascript来生成ftp脚本的小例子

    昨天闲着没事,又因为工作需要,写了一个脚本,用来做ftp。当然不是直接做ftp,而是产生一个ftp的脚本,供ftp命令使用。
    2013-07-07
  • 浅谈FastClick 填坑及源码解析

    浅谈FastClick 填坑及源码解析

    这篇文章主要介绍了浅谈FastClick 填坑及源码解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • JavaScript判断是否为数字的4种方法及效率比较

    JavaScript判断是否为数字的4种方法及效率比较

    这篇文章主要介绍了JavaScript判断是否为数字的4种方法及效率比较,本文直接给出判断方法实现代码及运行效率效果图,方便大家选择使用,需要的朋友可以参考下
    2015-04-04
  • javascript实现下拉提示选择框

    javascript实现下拉提示选择框

    这篇文章主要介绍了javascript实现下拉提示选择框的相关资料,需要的朋友可以参考下
    2015-12-12
  • 当滚动条滚动到页面底部自动加载增加内容的js代码

    当滚动条滚动到页面底部自动加载增加内容的js代码

    这篇文章主要介绍了如何使用javscript实现滚动条滚动到页面底部自动加载增加页面内容,需要的朋友可以参考下
    2014-05-05
  • JavaScript 手动实现instanceof的方法

    JavaScript 手动实现instanceof的方法

    instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上,本文重点给大家介绍JavaScript手动实现instanceof的问题,感兴趣的朋友跟随小编一起看看吧
    2021-10-10

最新评论