standard format

This commit is contained in:
luk 2024-09-23 11:09:34 +08:00
parent 9ebd7945ac
commit 36f69291f0

View File

@ -19,25 +19,19 @@ module.exports = {
}
Object.freeze(obj)
const propNames = Object.getOwnPropertyNames(obj)
propNames.forEach(prop => {
propNames.forEach((prop) => {
const propValue = obj[prop]
// for nested object
if (
propValue && typeof propValue === 'object' &&
!Object.isFrozen(propValue)
) {
if (propValue && typeof propValue === 'object' && !Object.isFrozen(propValue)) {
deepFreeze(propValue)
}
// for nested array
if (Array.isArray(propValue)) {
propValue.forEach(item => {
if (
item && typeof item === 'object' &&
!Object.isFrozen(item)
) {
propValue.forEach((item) => {
if (item && typeof item === 'object' && !Object.isFrozen(item)) {
deepFreeze(item)
}
});
})
Object.freeze(propValue) // Freeze the array itself
}
})
@ -316,30 +310,34 @@ module.exports = {
},
number_precision (number, precision = 4) {
if (isFinite(number)) // null, '', '0', []
if (isFinite(number)) {
// 包括 null, '', '0', [] 都 isFinite
return Number(Number(number).toFixed(precision))
else // undefined, NaN, Infinity, {}
} else {
// undefined, NaN, Infinity, {}
return 0
}
},
// 返回新的数组
filter_story (story) {
if (Array.isArray(story)) {
return story.filter(section => Object.values(section || {}).some(val => !this.is_empty(val))) // (section.text || section.image || section.video)?.trim?.()
return story.filter((section) => Object.values(section || {}).some((val) => !this.is_empty(val))) // (section.text || section.image || section.video)?.trim?.()
} else {
return []
}
},
is_empty (data) { // empty: undefined, null, false, 0, NaN, '', '空格tab, \n等', [], {}
is_empty (data) {
// empty: undefined, null, false, 0, NaN, '', '空格tab, \n等', [], {}
if (data) {
if (typeof (data) === 'string' && data.trim() === '') {
if (typeof data === 'string' && data.trim() === '') {
return true
}
if (Array.isArray(data) && data.length === 0) {
return true
}
if (typeof (data) === 'object' && Object.keys(data).length === 0) {
if (typeof data === 'object' && Object.keys(data).length === 0) {
return true
}
return false
@ -351,12 +349,13 @@ module.exports = {
* 对数组中的对象按对象的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])
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
}
@ -366,7 +365,8 @@ module.exports = {
}
},
objectize_array (arr, key) { // 是 Object.keys/values/entries 的反向操作,相当于 Array.objectize把数据转成对象
objectize_array (arr, key) {
// 是 Object.keys/values/entries 的反向操作,相当于 Array.objectize把数据转成对象
return arr.reduce((obj, item) => ({ ...obj, [item[key]]: item }), {})
},
@ -381,15 +381,16 @@ module.exports = {
},
has_module (module) {
if (typeof (module) === 'string' && module) {
return module.paths.some(modulesPath => fs.existsSync(path.join(modulesPath, module)))
if (typeof module === 'string' && module) {
return module.paths.some((modulesPath) => fs.existsSync(path.join(modulesPath, module)))
} else {
return false
}
},
segment_number (sizeBytes = '') { // segment a number with a space between each 3 digits
let segmented = (sizeBytes).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ')
segment_number (sizeBytes = '') {
// segment a number with a space between each 3 digits
let segmented = sizeBytes.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ')
const parts = segmented.split(' ')
parts[parts.length - 3] += 'm'
parts[parts.length - 2] += 'k'
@ -408,12 +409,11 @@ module.exports = {
// 如果用 path.extname:
// if (/^\./.test(filename)) filename = `added$filename` // path.extname('.abc') 结果为 '',所以要添加前缀
// return path.extname(filename).toLowerCase() // openAi*Ext 是包含 . 的,所以用 path.extname
},
delete_undefined (obj, { depth } = {}) {
// delete all undefined properties recursively inside an obect
Object.keys(obj).forEach(key => {
Object.keys(obj).forEach((key) => {
if (typeof obj[key] === 'undefined') {
delete obj[key]
} else if (typeof obj[key] === 'object') {
@ -421,5 +421,4 @@ module.exports = {
}
})
},
}