add excludeByKey

fix bug for Array
This commit is contained in:
Star 2025-01-14 14:29:55 +08:00
parent 6c1c1c56a4
commit e06153b6f4
2 changed files with 29 additions and 13 deletions

38
util.go
View File

@ -1060,10 +1060,10 @@ $MOD$.countBy = function (obj, ...fieldAndValues) {
} }
$MOD$.listBy = function (obj, ...fieldAndValues) { $MOD$.listBy = function (obj, ...fieldAndValues) {
let list = obj instanceof Array || obj instanceof NodeList ? [] : {} let list = obj.length !== undefined ? [] : {}
let keys = $MOD$.keysBy(obj, ...fieldAndValues) let keys = $MOD$.keysBy(obj, ...fieldAndValues)
for (let k of keys) { for (let k of keys) {
if (obj instanceof Array || obj instanceof NodeList) { if (obj.length !== undefined) {
list.push(obj[k]) list.push(obj[k])
} else { } else {
list[k] = obj[k] list[k] = obj[k]
@ -1091,7 +1091,7 @@ $MOD$.setBy = function (obj, value, ...fieldAndValues) {
$MOD$.indexBy = function (obj, ...fieldAndValues) { $MOD$.indexBy = function (obj, ...fieldAndValues) {
let keys = $MOD$.keysBy(obj, ...fieldAndValues) let keys = $MOD$.keysBy(obj, ...fieldAndValues)
if (keys.length > 0) { if (keys.length > 0) {
return obj instanceof Array || obj instanceof NodeList ? $MOD$.int(keys[0]) : keys[0] return obj.length !== undefined ? $MOD$.int(keys[0]) : keys[0]
} }
return -1 return -1
} }
@ -1101,7 +1101,7 @@ $MOD$.removeBy = function (obj, ...fieldAndValues) {
let n = 0 let n = 0
for (let i = keys.length - 1; i >= 0; i--) { for (let i = keys.length - 1; i >= 0; i--) {
let k = keys[i] let k = keys[i]
if (obj instanceof Array || obj instanceof NodeList) { if (obj.length !== undefined) {
obj.splice(k, 1) obj.splice(k, 1)
} else { } else {
delete obj[k] delete obj[k]
@ -1124,7 +1124,7 @@ $MOD$.last = function (arr) {
} }
$MOD$.len = function (obj) { $MOD$.len = function (obj) {
if (obj instanceof Array || obj instanceof NodeList) { if (obj.length !== undefined) {
return obj.length return obj.length
} else { } else {
let n = 0 let n = 0
@ -1151,12 +1151,12 @@ $MOD$.mergeBy = function (olds, news, ...fields) {
} }
$MOD$.sortBy = function (obj, field, isReverse = false, sortType) { $MOD$.sortBy = function (obj, field, isReverse = false, sortType) {
let list = obj instanceof Array || obj instanceof NodeList ? [] : {} let list = obj.length !== undefined ? [] : {}
let sortedKeys = {} let sortedKeys = {}
let sortArr = [] let sortArr = []
for (let k in obj) { for (let k in obj) {
let v = '' let v = ''
if (field instanceof Array) { if (field.length !== undefined) {
for (let f of field) v += obj[k][f] for (let f of field) v += obj[k][f]
} else { } else {
v = obj[k][field] v = obj[k][field]
@ -1184,13 +1184,13 @@ $MOD$.sortBy = function (obj, field, isReverse = false, sortType) {
for (let sortKey of sortArr) { for (let sortKey of sortArr) {
for (let k in obj) { for (let k in obj) {
let v = '' let v = ''
if (field instanceof Array) { if (field.length !== undefined) {
for (let f of field) v += obj[k][f] for (let f of field) v += obj[k][f]
} else { } else {
v = obj[k][field] v = obj[k][field]
} }
if (obj instanceof Array || obj instanceof NodeList) { if (obj.length !== undefined) {
if (v == sortKey) list.push(obj[k]) if (v == sortKey) list.push(obj[k])
} else { } else {
if (v == sortKey) list[k] = obj[k] if (v == sortKey) list[k] = obj[k]
@ -1201,7 +1201,7 @@ $MOD$.sortBy = function (obj, field, isReverse = false, sortType) {
} }
$MOD$.in = function (v1, v2) { $MOD$.in = function (v1, v2) {
if (!(v1 instanceof Array)) v1 = $MOD$.split(v1, /,\s*/) if (!(v1.length !== undefined)) v1 = $MOD$.split(v1, /,\s*/)
return v1.indexOf(String(v2)) !== -1 return v1.indexOf(String(v2)) !== -1
} }
@ -1218,7 +1218,7 @@ $MOD$.clearEmpty = function (arr) {
} }
$MOD$.split = function (v1, v2, n) { $MOD$.split = function (v1, v2, n) {
let a = $MOD$.str(v1).split(v2) let a = $MOD$.string(v1).split(v2)
if (!n || n < a.length - 1) return a if (!n || n < a.length - 1) return a
let a2 = a.slice(0, n) let a2 = a.slice(0, n)
a2[n - 1] = a.slice(n - 1).join(v2) a2[n - 1] = a.slice(n - 1).join(v2)
@ -1226,7 +1226,7 @@ $MOD$.split = function (v1, v2, n) {
} }
$MOD$.splitWithoutEmpty = function (v1, v2, n) { $MOD$.splitWithoutEmpty = function (v1, v2, n) {
let a = $MOD$.clearEmpty($MOD$.str(v1).split(v2)) let a = $MOD$.clearEmpty($MOD$.string(v1).split(v2))
if (!n || n < a.length - 1) return a if (!n || n < a.length - 1) return a
let a2 = a.slice(0, n) let a2 = a.slice(0, n)
a2[n - 1] = a.slice(n - 1).join(v2) a2[n - 1] = a.slice(n - 1).join(v2)
@ -1245,7 +1245,7 @@ $MOD$.makeDefault = function (item, defaults) {
$MOD$._copy = function (obj, isDeepCopy) { $MOD$._copy = function (obj, isDeepCopy) {
let newObj let newObj
if (obj instanceof Array || obj instanceof NodeList) { if (obj.length !== undefined) {
newObj = [] newObj = []
for (let o of obj) { for (let o of obj) {
if (isDeepCopy && typeof o === 'object' && o) o = $MOD$.copy(o) if (isDeepCopy && typeof o === 'object' && o) o = $MOD$.copy(o)
@ -1296,6 +1296,7 @@ $MOD$.isFloat = function (v) {
} }
$MOD$.getByKey = function (obj, ...keys) { $MOD$.getByKey = function (obj, ...keys) {
if( keys.length === 1 && keys[0].length ) keys = keys[0]
let o = {} let o = {}
for (let k in obj) { for (let k in obj) {
if (keys.indexOf(k) >= 0) { if (keys.indexOf(k) >= 0) {
@ -1304,6 +1305,17 @@ $MOD$.getByKey = function (obj, ...keys) {
} }
return o return o
} }
$MOD$.excludeByKey = function (obj, ...keys) {
if( keys.length === 1 && keys[0].length ) keys = keys[0]
let o = {}
for (let k in obj) {
if (keys.indexOf(k) < 0) {
o[k] = obj[k]
}
}
return o
}
`, `,
}) })
} }

View File

@ -112,6 +112,7 @@ export default {
isInt, isInt,
isFloat, isFloat,
getByKey, getByKey,
excludeByKey,
} }
function json(data: any): string { return '' } function json(data: any): string { return '' }
@ -277,3 +278,6 @@ function isFloat(v: any): boolean { return false }
// 从对象中获取指定的key生成新的对象返回 // 从对象中获取指定的key生成新的对象返回
function getByKey(obj: Object, ...keys: string[]): Object { return {} } function getByKey(obj: Object, ...keys: string[]): Object { return {} }
// 从对象中排除指定的key生成新的对象返回
function excludeByKey(obj: Object, ...keys: string[]): Object { return {} }