我使用可以归结为这样的一个过程动态构建对象的数组的数组中值:试验对象
//Objects Array
var objects = [];
//Object Structure
var object1 = {"id":"foobar_1", "metrics":90};
var object2 = {"id":"some other foobar", "metrics":50};
objects[0] = object1;
objects[1] = object2;
(放话称备案,如果你能想到的更好的方式来动态地嵌套数据,以便我可以通过objects[i].id
来访问它)
最终会有比上面更多的逻辑,但它只是没有写入。只需说“object1”和“object2”部分实际上将在迭代器中。
在该迭代器中,我想在将另一个对象添加到数组之前检查ID的存在。例如,如果我已经有一个ID为"foobar_1"
的对象,而不是将新成员推送到该阵列,我只是想增加它的"metrics"
值。
如果我没有处理一个对象数组,我可以使用inArray
来查找“foobar_1”(一个jQuery实用程序)。但是这不会考虑对象的价值。我看到它的方式,我有两种选择:
保留一个单独的简单数组的ID。因此,我只是简单地检查
inArray
(或普通的JS等价物),而不是仅依赖于objects
数组,因此仅为此目的使用了一个简单的“objectIDs”数组。迭代通过我现有的数据对象和我
"foobar_1"
针比较各objects[i].id
草垛
我觉得#1肯定是更有效的,但我不禁怀疑,如果我失去了一个功能,将为我做这项工作。我错过了#3,4或5选项! CPU消耗有点重要,但我也对那些使代码不那么冗长的函数感兴趣,无论它们是否更加有效。
你为什么不做一个大哈希出来(而不是数组)? – 2012-03-13 16:59:37
@SergioTulentsev诚实的事实是,我从来没有机会使用散列,所以我在理论,最佳实践或语法方面没有任何知识。我不介意打破我的舒适区,但我必须教自己。 ;-) – 2012-03-13 17:09:40
查看@ jfriend00的答案。这就是我正在谈论的。 – 2012-03-13 17:10:31