javascript - 不循环地从对象中删除某些属性

标签 javascript jquery object

我正在尝试找到从 commentCountlikeCount 属性均等于 0 的对象中删除属性的最有效方法。在以下示例中, Activity.3 将被删除。我不想用 $.each() 循环它们,因为这似乎会花费比必要的更多的时间。

Activity = {
    0 : {
    'commentCount' : 10,
    'likeCount' : 20    
    },
    1 : {
    'commentCount' : 0,
    'likeCount' : 20    
    },
    2 : {
    'commentCount' : 10,
    'likeCount' : 0    
    },
    3 : {
    'commentCount' : 0,
    'likeCount' : 0    
    }
}

更新

该对象的创建环境已受到质疑。澄清一下,Activity 对象内部最多可以有 300 万个属性。它在服务器端生成为 AJAX JSON 响应,并保存到内存中。它不仅仅包括在其他地方使用的 commentCountlikeCount,所以我不能让服务器不响应两个 都为 0 的内容commentCountlikeCount

最佳答案

啊,过早优化的味道^_^

你有多少这样的元素?您需要多少个来清洁它们?如果答案是“少于 100 万”和“一次或很少”,则可能不值得打扰。

如果您需要一种快速且最佳的方法,这里有一个想法:为属性创建一个新的数据结构和 setter 。每次设置时,检查它们是否都是0并将它们放入“kill”列表中。

这样,您只需迭代杀死列表即可。

[编辑] 对于数百万个对象并且需要快速清理,杀死列表是最佳选择,特别是当情况很少见时(只有几个对象匹配)。

只需编写一个更新这些属性的函数,并确保所有代码都通过它来更新它们。然后,您可以在那里管理杀戮列表。

或者,您可以在调用该函数后立即删除该对象,以将两个属性或第二个属性设置为 0。

关于javascript - 不循环地从对象中删除某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107317/

相关文章:

javascript - 半透明的深色 mask /覆盖整个屏幕,除了 <nav> 当聚焦于 <nav> 内的元素时?

java - 设置 session cookie 的到期日期

javascript - Codeigniter ajax表单验证错误

javascript - 创建具有属性的函数

java - 类型实例化和声明在同一行

javascript - 错误 : Uncaught (in promise): [object Object]

javascript - 获取元素的内部文本

javascript - 如何使用 jQuery 淡入附加的 HTML?

javascript - jQuery 中的 Bootstrap 菜单单击事件

java - String 类如何覆盖 + 运算符?