Javascript - 在Array中插入唯一元素:多维检查x临时一维数组

时间:2015-07-06 16:01:23

标签: javascript arrays performance

我不知道这是不是一个愚蠢的问题,但它来了:

想象一下无序对象的数组,如:  [{id:4, name:"a"},{id:2, name:"b"},{id:3, name:"ee"},{id:1, name:"fe"},.....]

使用javascript在循环内部创建这个数组,但是,每当我向数组推送内容时,我必须检查是否存在具有相同id的对象并且只推送新内容。

哪一个更快:

1)在每个循环中检查整个数组。

2)仅使用ids创建临时一维数组,并使用indexOf检查新对象id是否存在,然后,如果临时数组不存在,则添加它到原始阵列。

1 个答案:

答案 0 :(得分:1)

怎么样

var a = []
var o = { id:10, name:"xyz" }
if(typeof a[o.id]=="undefined") {
    a[o.id] = { name:o.name }
}

?对大多数机器来说,这应该是最快的或者不改变你的对象结构

a[o.id] = { id:o.id, name:o.name }

但更好的方法是

function getA(i) { if (typeof a[i] == "undefined") return null;
    return { id:i, name:a[i].name }; }