1
This commit is contained in:
38
20220330_Vote/Ewide.Web.Entry/wwwroot/lib/xe-utils/uniq.js
Normal file
38
20220330_Vote/Ewide.Web.Entry/wwwroot/lib/xe-utils/uniq.js
Normal file
@@ -0,0 +1,38 @@
|
||||
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
|
||||
Reference in New Issue
Block a user