我目前有一个数组数据结构,我像这样迭代它,调用foo
每对唯一的元素。
for(var i = 0; i < arr.length; i++) {
for(var j = i + 1; j < arr.length; j++) {
foo(arr[i], arr[j]);
}
}
但是,我意识到我宁愿使用对象而不是数组,因为这样我就可以很容易地按名称添加和删除元素。
但是,我看不到迭代此类对象的明显方法。我能得到的最接近的是:
for(i in obj) {
for(j in obj) {
foo(obj[i], obj[j]);
}
}
显然,这将对每一对做两次,甚至产生一对相同的元素。有没有一种简单的方法可以像在第一个代码示例中的数组中那样迭代对象?
更新:
在jsperf上测试解决方案的性能。