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);