/src/php/array/array_unique.js
JavaScript | 44 lines | 25 code | 4 blank | 15 comment | 6 complexity | 9ac8ffc3df1ae98428226e05d0c7bbe4 MD5 | raw file
- module.exports = function array_unique (inputArr) { // eslint-disable-line camelcase
- // discuss at: https://locutus.io/php/array_unique/
- // original by: Carlos R. L. Rodrigues (https://www.jsfromhell.com)
- // input by: duncan
- // input by: Brett Zamir (https://brett-zamir.me)
- // bugfixed by: Kevin van Zonneveld (https://kvz.io)
- // bugfixed by: Nate
- // bugfixed by: Kevin van Zonneveld (https://kvz.io)
- // bugfixed by: Brett Zamir (https://brett-zamir.me)
- // improved by: Michael Grier
- // note 1: The second argument, sort_flags is not implemented;
- // note 1: also should be sorted (asort?) first according to docs
- // example 1: array_unique(['Kevin','Kevin','van','Zonneveld','Kevin'])
- // returns 1: {0: 'Kevin', 2: 'van', 3: 'Zonneveld'}
- // example 2: array_unique({'a': 'green', 0: 'red', 'b': 'green', 1: 'blue', 2: 'red'})
- // returns 2: {a: 'green', 0: 'red', 1: 'blue'}
- let key = ''
- const tmpArr2 = {}
- let val = ''
- const _arraySearch = function (needle, haystack) {
- let fkey = ''
- for (fkey in haystack) {
- if (haystack.hasOwnProperty(fkey)) {
- if ((haystack[fkey] + '') === (needle + '')) {
- return fkey
- }
- }
- }
- return false
- }
- for (key in inputArr) {
- if (inputArr.hasOwnProperty(key)) {
- val = inputArr[key]
- if (_arraySearch(val, tmpArr2) === false) {
- tmpArr2[key] = val
- }
- }
- }
- return tmpArr2
- }