Skip to content

Commit

Permalink
Merge pull request persvr#33 from kriszyp/master
Browse files Browse the repository at this point in the history
Fix union to properly union instead of adding duplicates
  • Loading branch information
kriszyp committed Aug 15, 2013
2 parents 284c0d4 + 758ca34 commit b6e9e81
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions js-array.js
Expand Up @@ -13,6 +13,7 @@ var parseQuery = parser.parseQuery;
var stringify = JSON.stringify || function(str){
return '"' + str.replace(/"/g, "\\\"") + '"';
};
var nextId = 1;
exports.jsOperatorMap = {
"eq" : "===",
"ne" : "!==",
Expand Down Expand Up @@ -77,9 +78,24 @@ exports.operators = {
}),
or: function(){
var items = [];
//TODO: remove duplicates and use condition property
for(var i = 0; i < arguments.length; i++){
items = items.concat(arguments[i].call(this));
var idProperty = "__rqlId" + nextId++;
try{
for(var i = 0; i < arguments.length; i++){
var group = arguments[i].call(this);
for(var j = 0, l = group.length;j < l;j++){
var item = group[j];
// use marker to do a union in linear time.
if(!item[idProperty]){
item[idProperty] = true;
items.push(item);
}
}
}
}finally{
// cleanup markers
for(var i = 0, l = items.length; i < l; i++){
delete items[idProperty];
}
}
return items;
},
Expand Down

0 comments on commit b6e9e81

Please sign in to comment.