From 97861ede2007b49eb00b8cfe37540a5a14909c29 Mon Sep 17 00:00:00 2001 From: Julien Sanchez Date: Thu, 9 Jul 2015 12:18:50 +0200 Subject: [PATCH] Add a `uniq` method to remove string duplicates from array Close #40 --- src/quantities.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/quantities.js b/src/quantities.js index ae85af5..db91061 100644 --- a/src/quantities.js +++ b/src/quantities.js @@ -478,15 +478,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI * @returns {string[]} names of kinds of units */ Qty.getKinds = function() { - var knownKinds = Object.keys(KINDS).map(function(knownSignature) { + return uniq(Object.keys(KINDS).map(function(knownSignature) { return KINDS[knownSignature]; - }).sort().filter(function(kind, index, arr) { - if (kind === arr[index-1]) { - return false; - } - return true; - }); - return knownKinds; + })); }; /** @@ -1684,6 +1678,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return value; } + /** + * Returns unique strings from list + * + * @param {string[]} array of strings + * + * + * @returns {string[]} a new array of strings without duplicates + */ + function uniq(strings) { + var seen = {}; + return strings.filter(function(item) { + return seen.hasOwnProperty(item) ? false : (seen[item] = true); + }); + } + /** * Tests if a value is a string *