create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
37 lines (32 loc) • 749 B
JavaScript
import inArray from './in-array';
/**
* @private
* unique array with objects based on a key (like 'id') or just by the array's value
* @param {Array} src [{id:1},{id:2},{id:1}]
* @param {String} [key]
* @param {Boolean} [sort=False]
* @returns {Array} [{id:1},{id:2}]
*/
export default function uniqueArray(src, key, sort) {
let results = [];
let values = [];
let i = 0;
while (i < src.length) {
let val = key ? src[i][key] : src[i];
if (inArray(values, val) < 0) {
results.push(src[i]);
}
values[i] = val;
i++;
}
if (sort) {
if (!key) {
results = results.sort();
} else {
results = results.sort((a, b) => {
return a[key] > b[key];
});
}
}
return results;
}