I have aan array of objects.
Each object is {key, value}
For each object key is an array consisting of strings ['foo', 'bar', 'baz']
.
I want to remove any duplicates of ['foo', 'bar', 'baz']
from the array so that further processing is only done on unique values.
Currently I'm doing this
function removeArrayDupes(input){
var i = input.length;
var previous;
input.sort();
if (i){
while (--i){
var cur = input[i];
if (!cur.key){
// Remove empty records
input.splice(i,1);
} else {
// Clear duplicates
if ((previous) && (input[i].key) === previous){
input.splice(i,1);
regex= "/" + JSON.stringify(input[i].key) + "/g";
previous = input[i].key;
} else {
previous = input[i].key;
}
}
}
}
}
My problem: If dupes < 3, the single duplicate is not removed.
My brain is tired because I can't see where I'm screwing this up.
I could use an extra brain or two to resolve this.
I looking for solutions usinng Vanilla JavaScript. It's not just about making it work< I want to gain comprehension on the problem and if there is a better algorith.
TIA
Sample data:
[
{key: ["foo","bar","baz"], value: "Some data"},
{key: ["foo","bar","baz"], value: "Some data"},
{key: ["foo","bar","baz"], value: "Some data"},
{key: ["baz","bar","foo"], value: "Some data"},
{key: ["bar","foo","baz"], value: "Some data"},
{key: ["bar","foo","bar"], value: "Some data"},
{key: ["bar","foo","bar"], value: "Some data"},
{key: ["bar","foo","bar"], value: "Some data"},
{key: ["bar","foo","bar"], value: "Some data"},
{key: ["baz","bar","foo"], value: "Some data"},
{key: ["baz","bar","foo"], value: "Some data"},
]
Desired output:
[
{key: ["foo","bar","baz"], value: "Some data"},
{key: ["baz","bar","foo"], value: "Some data"},
{key: ["bar","foo","baz"], value: "Some data"},
{key: ["bar","foo","bar"], value: "Some data"},
{key: ["baz","bar","foo"], value: "Some data"}
]