sf-utils2 sf-utils2
版本v3.3.3-beta1
首页
  • 01.快速开始 🔥
  • 02.基础-Base
  • 03.对象-Object
  • 04.数组-Array
  • 05.方法-Function
  • 06.字符串-String
  • 07.数学-Math
  • 08.dom
  • 09.拓展
  • webpack5.x教程学习 (opens new window)
  • 例子
  • 教程 🔥
  • 例子配置
企业级后台模版 (opens new window)
版本v3.3.3-beta1
首页
  • 01.快速开始 🔥
  • 02.基础-Base
  • 03.对象-Object
  • 04.数组-Array
  • 05.方法-Function
  • 06.字符串-String
  • 07.数学-Math
  • 08.dom
  • 09.拓展
  • webpack5.x教程学习 (opens new window)
  • 例子
  • 教程 🔥
  • 例子配置
企业级后台模版 (opens new window)
  • 快速开始

  • 基础-Base

  • 对象-Object

    • 序言 👏
    • has【对象含有属性(功能更强大)】
    • hasOwn【对象含有属性(扩展)】
    • deepClone【深度克隆】
    • setPropPath【给每个对象设置路径节点名】
    • findPropPath【从对象中找到键名路径名】
    • get【获取对象属性值】🔥🔥🔥
    • flatten 【将对象进行扁平化】
    • readonly【定义只读属性】
    • def【定义不可枚举属性】
    • cache【内存缓存对象】
    • bus【发布订阅】🔥🔥🔥
    • merge 【合并对象】
    • deepMerge 【递归深合并对象】
    • transformObjectKeys【对象属性字段全部转成大写或者小写】
      • 1.示例
      • 2.入参说明
      • 3.源码
    • convertPropToLower【对象属性字段全部转成大写或者小写】
    • looseEqual【比较对象内部结构和数据】🔥🔥🔥
    • omit【忽略对象属性】
    • pick【取出对象属性】
  • 数组-Array✨✨✨

  • 方法-Function

  • 字符串-String

  • 数学-Math

  • 文件-Buffer

  • 节点-dom

  • 拓展

  • nodejs

目录

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.入参说明

参数 说明 类型 是否必填 默认值
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
上次更新: 2023/09/17, 22:58:23
deepMerge 【递归深合并对象】
convertPropToLower【对象属性字段全部转成大写或者小写】

← deepMerge 【递归深合并对象】 convertPropToLower【对象属性字段全部转成大写或者小写】→

Theme by Vdoing | Copyright © 2022-2025 bianpengfei
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×