Unique members
by Arnaud Buchholz
CSS
.ok {
color: green;
}
.ko {
color: red;
}
JavaScript
function log (text) {
var div = document.createElement("div");
div.appendChild(document.createTextNode(text));
return document.body.appendChild(div);
}
function checkIfOnlyUniqueItems (array) {
for (var i=0; i<array.length; i++){
if (array.indexOf(array[i]) !== array.lastIndexOf(array[i])){
return false
}
}
return true;
}
function checkIfOnlyUniqueItems_Arnaud (array) {
return array.reduce(function (accumulator, value) {
if (accumulator.hasOwnProperty(value)) {
accumulator._result = false;
}
accumulator[value] = true;
return accumulator;
}, {_result: true})._result;
}
function assert(array, expectedResult) {
var result = checkIfOnlyUniqueItems(array),
className;
if (result === expectedResult) {
className = "ok";
} else {
className = "ko";
}
log(array.join(",")).className = className;
}
var ARRAY_TO_TEST = ["a", "a", "b", "b", "c"];
var set = new Set();
var iterator = set.entries();
for (var entry of iterator) {
log("Set contains " + entry);
}
assert(["a"], true);
assert(["a", "a"], false);
assert(["a", "b"], true);
assert(["a", "b", "a"], false);
assert(["a", "b", "c"], true);
assert(ARRAY_TO_TEST, false);