Detecting unique arrays in Javascript
Using a single loop and caching seen values in an object literal will end up as Linear time complexity O(n)
by Farzad YZ
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/1.2.1/lodash.min.js"></script>
JavaScript
console.clear();
function isUniqueLinear(arr) {
const seenValues = {};
for (let i = 0; i < arr.length; i++) {
if (seenValues[arr[i]]) {
return false;
}
else {
seenValues[arr[i]] = true;
}
}
return true;
}
let smallDuplicate = [1, 4, 6, 10, 4];
let largeDuplicate = _.range(3500).concat(5).concat(_.range(10000, 3510));
let smallUnique = [1, 4, 5, 10, 52];
let largeUnique = _.range(10000);
console.log(isUniqueLinear(smallDuplicate))
console.log(isUniqueLinear(largeDuplicate))
console.log(isUniqueLinear(smallUnique))
console.log(isUniqueLinear(largeUnique))