仅添加(如果尚未添加)

时间:2011-01-02 06:20:24

标签: javascript data-structures

这是我的数据结构:

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

2 个答案:

答案 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]引用它。