convertPropToLower【对象属性字段全部转成大写或者小写】
描述
将某个对象或数组里的所有的对象属性(依次递归其下所有属性), 属性字段 转成 大写或者小写。不推荐使用 推荐使用 transformObjectKeys 方法 👉
# 1.示例
import { convertPropToLower } 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: tempObj, toLowerCase: true })
// 结果:
// { name: '蔡徐坤', age: 10, list: [{ rank: 1, teachers: [{ name: '李老师' }] }] }
convertPropToLower({ data: tempArr, toLowerCase: true })
// 结果:
// { 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, toLowerCase: false })
// 结果:
// { NAME: '蔡徐坤', AGE: 10, LIST: [{ RANK: 1, TEACHERS: [{ NAME: '李老师' }] }] }
convertPropToLower({ data: tempArr1, toLowerCase: false })
// 结果
// { 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
35
36
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
# 2.入参说明
| 参数 | 说明 | 类型 | 是否必填 | 默认值 |
|---|---|---|---|---|
| data | 原数据 | Object Array | 是 | |
| toLowerCase | 是否转成小写,默认是 | Boolean | 否 | true |
# 3.源码
import isPlainObject from '@/base/isPlainObject.js'
import isArray from '@/base/isArray'
/**
* 将某个对象或数组里的所有的对象属性转成 大写或者小写
* @param {object | array} data
* @param {boolean} toLowerCase 是否转成小写 可选值 true false 默认值 true
* @returns {{}}
*/
function convertPropToLower({ data = {}, toLowerCase = true }) {
// 先转换
const convertObj = ({ data = {}, toLowerCase = true }) => {
if (isPlainObject(data)) {
Object.keys(data).forEach(key => {
const upperKey = toLowerCase ? String.prototype.toLowerCase.call(key) : String.prototype.toUpperCase.call(key)
data[upperKey] = JSON.parse(JSON.stringify(data[key]))
convertPropToLower({ data: data[upperKey], toLowerCase })
})
} else if (isArray(data)) {
data.forEach(v => {
convertPropToLower({ data: v, toLowerCase })
})
}
return data
}
// 删除之前的键名
const delObjField = ({ data = {}, toLowerCase = true }) => {
if (isPlainObject(data)) {
Object.keys(data).forEach(key => {
const upperKey = toLowerCase ? String.prototype.toLowerCase.call(key) : String.prototype.toUpperCase.call(key)
if (upperKey != key) {
delete data[key]
}
})
} else if (isArray(data)) {
data.forEach(v => {
delObjField({ data: v, toLowerCase })
})
}
return data
}
const _data = convertObj({ data, toLowerCase })
return delObjField({ data: _data, toLowerCase })
}
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
41
42
43
44
45
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
41
42
43
44
45
上次更新: 2023/09/17, 22:58:23