Files
number_zj/20220330_Vote/Ewide.Web.Entry/wwwroot/lib/xe-utils/uniq.js
毛财君 197b38ca6f 1
2023-07-06 17:37:33 +08:00

39 lines
802 B
JavaScript

var each = require('./each')
var includes = require('./includes')
var isFunction = require('./isFunction')
var property = require('./property')
/**
* 数组去重
*
* @param {*} array 数组
* @param {*} iterate 字段或回调
* @param {*} context
* @returns
*/
function uniq (array, iterate, context) {
var result = []
if (iterate) {
if (!isFunction(iterate)) {
iterate = property(iterate)
}
var val, valMap = {}
each(array, function (item, key) {
val = iterate.call(context, item, key, array)
if (!valMap[val]) {
valMap[val] = 1
result.push(item)
}
})
} else {
each(array, function (value) {
if (!includes(result, value)) {
result.push(value)
}
})
}
return result
}
module.exports = uniq