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:您可以(也应该)简单地对我的答案进行注释。