transformObjectKeys【对象属性字段全部转成大写或者小写】
描述
将某个对象或数组里的所有的对象属性(依次递归其下所有属性), 属性字段 转成 成自定义的输出 3.0.24-beta-3+
# 1.示例
import { transformObjectKeys } from 'sf-utils2'
const tempObj = { NAME: '蔡徐坤', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] }
const tempArr = [
{ NAME: '鸡哥', AGE: 22 },
{ NAME: '芜湖大司马', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] },
{ NAME: '德玛西亚', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] }
]
// 将对象/数组里面每一项对象属性名转成小写
convertPropToLower({ data: tempArr, transformFunc: key => key.toLowerCase() })
// 结果:
// { name: '鸡哥', age: 22 },
// { name: '芜湖大司马', age: 10, list: [{ rank: 1, teachers: [{ name: '李老师' }] }] },
// { name: '德玛西亚', age: 10, list: [{ rank: 1, teachers: [{ name: '李老师' }] }] }
// 原数据
const tempObj1 = { name: '蔡徐坤', age: 10, list: [{ rank: 1, teachers: [{ name: '李老师' }] }] }
const tempArr1 = [
{ name: '鸡哥', age: 22 },
{ name: '芜湖大司马', age: 10, list: [{ rank: 1, teachers: [{ name: '李老师' }] }] },
{ name: '德玛西亚', age: 10, list: [{ rank: 1, teachers: [{ name: '李老师' }] }] }
]
// 将对象/数组里面每一项对象属性名转成大写
convertPropToLower({ data: tempObj1, transformFunc: key => key.toUpperCase() })
// 结果:
// { NAME: '蔡徐坤', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] }
convertPropToLower({ data: tempArr1, transformFunc: key => key.toUpperCase() })
// 结果
// { NAME: '鸡哥', AGE: 22 },
// { NAME: '芜湖大司马', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] },
// { NAME: '德玛西亚', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 2.入参说明
| 参数 | 说明 | 类型 | 是否必填 | 默认值 |
|---|---|---|---|---|
| data | 原数据 | Object Array | 是 | |
| transformFunc | 转换方法,默认是原属性 key | Function | 否 | key => key |
# 3.源码
import isPlainObject from '@/base/isPlainObject.js'
import isArray from '@/base/isArray'
import isFunction from '@/base/isFunction'
import def from '@/object/def'
/**
* 转换键名
* @param {string} key 键名
* @private
* @return {string}
*/
const __transformFunc = key => key
/**
* 将某个对象或数组里的所有的对象属性转成,对应transformFunc值
* @param data 原对象 {object | array}
* @param transformFunc 转换key函数 可选值 默认值 undefined {boolean|function}
* @returns {{}}
*/
function transformObjectKeys({ data = {}, transformFunc = __transformFunc }) {
if (!isFunction(transformFunc)) return data
// 先转换
const _convert = data => {
if (!isFunction(transformFunc)) return data
if (isPlainObject(data)) {
Object.keys(data).forEach(key => {
const upperKey = transformFunc(key)
if (upperKey != key) def(data, key)
data[upperKey] = data[key]
_convert(data[upperKey])
})
} else if (isArray(data)) {
data.forEach(_convert)
}
return data
}
const _data = _convert(data)
return JSON.parse(JSON.stringify(_data))
}
export default transformObjectKeys
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
上次更新: 2023/09/17, 22:58:23