change 'keysort to keysort_array

This commit is contained in:
Luk 2024-05-04 12:28:32 +08:00
parent 7407ac47a2
commit 4f645a44c3

View File

@ -10,10 +10,6 @@ module.exports = {
sleep: (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms)),
objectize_array (arr, key) {
return arr.reduce((obj, item) => ({ ...obj, [item[key]]: item }), {})
},
deepFreeze (obj) {
if (typeof obj !== 'object' || obj === null) {
return obj
@ -316,22 +312,6 @@ module.exports = {
return (parent[keychain[keychain.length - 1]] = value)
},
/**
* 对数组中的对象按对象的key进行sortType排序
* @param key 数组中的对象为object,按object中的key进行排序
* @param sortType true为降序false为升序
* 用法
* var ary=[{id:1,name:"b"},{id:2,name:"b"}];
* ary.sort(keysort('name',true));
* ary.sort(keysort('name',false));
* ary.sort(keysort('id',false));
*/
keysort (key, sortType) {
return function (a, b) {
return sortType ? ~~(a[key] < b[key]) : ~~(a[key] > b[key])
}
},
number_precision (number, precision = 4) {
if (isFinite(number)) // null, '', '0', []
return Number(Number(number).toFixed(precision))
@ -339,11 +319,36 @@ module.exports = {
return 0
},
// 返回新的数组
filter_story (story) {
if (Array.isArray(story)) {
return story.filter(section => Object.values(section).some(val => val?.trim?.())) // (section.text || section.image || section.video)?.trim?.()
} else {
return []
}
}
},
/**
* 对数组中的对象按对象的key进行sortType排序
*/
keysort_array (arr, key, order = 'ASC') {
if (Array.isArray(arr) && typeof (key) === 'string' && key) {
return arr.sort((a, b) => { // 负数: a, b. 正数: b, a
if (typeof (a[key]) === 'number' && typeof (b[key]) === 'number') {
return (order === 'DESC') ? b[key] - a[key] : a[key] - b[key]
} else if (typeof (a[key]) === 'string' && typeof (b[key]) === 'string') {
return (order === 'DESC') ? b[key].localeCompare(a[key]) : a[key].localeCompare(b[key])
} else {
return 0
}
})
} else {
return arr
}
},
objectize_array (arr, key) { // 是 Object.keys/values/entries 的反向操作,相当于 Array.objectize把数据转成对象
return arr.reduce((obj, item) => ({ ...obj, [item[key]]: item }), {})
},
}