我正在尝试找到从 commentCount
和 likeCount
属性均等于 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 响应,并保存到内存中。它不仅仅包括在其他地方使用的 commentCount
和 likeCount
,所以我不能让服务器不响应两个 都为 0 的内容commentCount
和 likeCount
。
最佳答案
啊,过早优化的味道^_^
你有多少这样的元素?您需要多少个来清洁它们?如果答案是“少于 100 万”和“一次或很少”,则可能不值得打扰。
如果您需要一种快速且最佳的方法,这里有一个想法:为属性创建一个新的数据结构和 setter 。每次设置时,检查它们是否都是0
并将它们放入“kill”列表中。
这样,您只需迭代杀死列表即可。
[编辑] 对于数百万个对象并且需要快速清理,杀死列表是最佳选择,特别是当情况很少见时(只有几个对象匹配)。
只需编写一个更新这些属性的函数,并确保所有代码都通过它来更新它们。然后,您可以在那里管理杀戮列表。
或者,您可以在调用该函数后立即删除该对象,以将两个属性或第二个属性设置为 0。
关于javascript - 不循环地从对象中删除某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107317/