更新记录

1.0.0(2025-05-28) 下载此版本

  • 初始版本发布。

平台兼容性

uni-app x

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0 12

其他

多语言 暗黑模式 宽屏模式
× ×

kux-deepmerge

参考 deepmerge 设计的深度合并工具库,专为 UTS 跨平台开发设计。

功能特色

  • ✅ 深度对象合并
  • ✅ 智能数组合并策略
  • ✅ 循环引用检测
  • ✅ 自定义合并规则
  • ✅ 类型安全校验

快速开始

基础用法

merge

import { merge } from '@/uni_modules/kux-deepmerge';

const x = {
    foo: { bar: 3 },
    array: [{
        does: 'work',
        too: [ 1, 2, 3 ]
    }]
}

const y = {
    foo: { baz: 4 },
    quux: 5,
    array: [{
        does: 'work',
        too: [ 4, 5, 6 ]
    }, {
        really: 'yes'
    }]
}

const output = {
    foo: {
        bar: 3,
        baz: 4
    },
    array: [{
        does: 'work',
        too: [ 1, 2, 3 ]
    }, {
        does: 'work',
        too: [ 4, 5, 6 ]
    }, {
        really: 'yes'
    }],
    quux: 5
}

merge(x, y) // => output

mergeAll

mergeAll([x, y]) // => output

数组合并策略

// 默认追加模式
merge([1, 2], [3, 4]) // => [1, 2, 3, 4]

// 自定义覆盖模式
const options = {
  arrayMerge: (target, source) => [...source]
} as MergeOptions
merge([1, 2], [3, 4], options) // => [3, 4]

配置选项

MergeOptions 参数说明

参数 类型 默认值 描述
clone (boolean | null)? true 是否克隆原始对象
arrayMerge (target[], source[], options) => any[] 合并后追加 自定义数组合并策略
customMerge (key: string) => MergeFunction? - 按属性名自定义合并逻辑
isMergeableObject (obj) => boolean? 非数组对象 判断是否可合并的对象

高级示例

// 自定义属性合并规则
const mergeOptions = {
    customMerge: (key: string): MergeFunction | null => {
        if (key == 'specialKey') {
            // 特殊合并逻辑演示
            return ((x: any, y: any, options: MergeOptions): any => {
                return {
                    version: 4
                }
            }) as MergeFunction | null
        }

        return null;
    }
} as MergeOptions;

const baseConfig = {
  version: 1,
  features: {
    analytics: true,
    logging: false
  },
  endpoints: [
    "https://api.example.com/v1"
  ],
  specialKey: {
    mode: "default",
    retries: 3
  }
}

const updateConfig = {
  version: 2,
  features: {
    logging: true
  },
  endpoints: [
    "https://api.example.com/v2"
  ],
  specialKey: {
    retries: 5,
    timeout: 5000
  }
}

const merged = merge(baseConfig, updateConfig, mergeOptions);
console.log(merged);

结语

kux 不生产代码,只做代码的搬运工,致力于提供uts 的 js 生态轮子实现,欢迎各位大佬在插件市场搜索使用 kux 生态插件:https://ext.dcloud.net.cn/search?q=kux

友情推荐

  • TMUI4.0:包含了核心的uts插件基类.和uvue组件库
  • GVIM即时通讯模版:GVIM即时通讯模版,基于uni-app x开发的一款即时通讯模版
  • t-uvue-ui:T-UVUE-UI是基于UNI-APP X开发的前端UI框架
  • UxFrame 低代码高性能UI框架:【F2图表、双滑块slider、炫酷效果tabbar、拖拽排序、日历拖拽选择、签名...】UniAppX 高质量UI库
  • wx-ui 基于uni-app x开发的高性能混合UI库:基于uni-app x开发的高性能混合UI库,集成 uts api 和 uts component,提供了一套完整、高效且易于使用的UI组件和API,让您以更少的时间成本,轻松完成高性能应用开发。
  • firstui-uvue:FirstUI(unix)组件库,一款适配 uni-app x 的轻量、简洁、高效、全面的移动端组件库。
  • easyXUI 不仅仅是UI 更是为UniApp X设计的电商模板库:easyX 不仅仅是UI库,更是一个轻量、可定制的UniAPP X电商业务模板库,可作为官方组件库的补充,始终坚持简单好用、易上手

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问