这是我的数据结构:
var data = [
{ id: '1924', info: 'boo' },
{ id: '1967', info: 'foo' }
];
id值应该是唯一的,但信息可能不是唯一的。只有当新数据的id是唯一的时,我才会如何将新数据添加到数据哈希中?
是迭代整个哈希的唯一方法,看看是否已经存在这样的ID?
data.push({ id: '1967', info: 'goo-goo' }); //should not be added
data.push({ id: '1963', info: 'goo-goo' }); //should be added
答案 0 :(得分:9)
如果您可以更改数据结构,可以使用更少的代码完成:
var data = {
'1924': {'info': 'goo-goo'},
'1967': {'info': 'boo-boo'}
};
function add(obj, id, data) {
if (obj[id] === undefined) { // if you have fear about the prototype chain being poisoned
// add in a hasOwnProperty
obj[id] = data;
}
}
这样做的好处是访问速度要快得多(如果你有ID)。
答案 1 :(得分:-1)
Ivo,您的解决方案的问题在于我还会跟踪当前显示的信息的索引。 { id: '1967', info: 'foo' }
的索引在该数据哈希值中为1,因此如果需要,我可以通过data[1]
引用它。