* 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}]
(src, key, sort)
| 51665 | |
| 51666 | |
| 51667 | function uniqueArray(src, key, sort) { |
| 51668 | var results = []; |
| 51669 | var values = []; |
| 51670 | var i = 0; |
| 51671 | |
| 51672 | while (i < src.length) { |
| 51673 | var val = key ? src[i][key] : src[i]; |
| 51674 | |
| 51675 | if (inArray(values, val) < 0) { |
| 51676 | results.push(src[i]); |
| 51677 | } |
| 51678 | |
| 51679 | values[i] = val; |
| 51680 | i++; |
| 51681 | } |
| 51682 | |
| 51683 | if (sort) { |
| 51684 | if (!key) { |
| 51685 | results = results.sort(); |
| 51686 | } else { |
| 51687 | results = results.sort(function sortUniqueArray(a, b) { |
| 51688 | return a[key] > b[key]; |
| 51689 | }); |
| 51690 | } |
| 51691 | } |
| 51692 | |
| 51693 | return results; |
| 51694 | } |
| 51695 | /** |
| 51696 | * get the prefixed property |
| 51697 | * @param {Object} obj |
no test coverage detected