Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在尚未就位时添加_Javascript_Data Structures - Fatal编程技术网

Javascript 仅在尚未就位时添加

Javascript 仅在尚未就位时添加,javascript,data-structures,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: '1

以下是我的数据结构:

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

如果可以更改数据结构,则可以使用较少的代码:

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)。

Ivo,您的解决方案的问题是,我还跟踪当前显示的信息的索引。
{id:'1967',info:'foo'}
的索引在该数据散列中是1,因此如果需要,我可以通过
data[1]
引用它

这是一种糟糕的做法,一旦从数组中删除了某些内容,它之后的所有索引都将无效(除非您将其替换为未定义的
但随后您需要在其他位置进行更多检查。只需使用ID而不是索引。PS:您可以(也应该)简单地对我的答案进行注释。