日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

typescript或javascript深拷贝Object json

發布時間:2025/3/8 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 typescript或javascript深拷贝Object json 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

typescript或javascript深拷貝Object json

Object的json對象很多時候我們需要深拷貝,我寫了兩個工具函數,供大家參考。

deepCopyObject

深拷貝一個Object對象,返回深復制的對象。

/** * @method 深復制一個json對象 * @param source 需要深復制的對象 * @return 返回一個新的json對象 * @author vincent 2018-11-29 * @version 0.0.0 * @example * @log 1. vincent,2018-11-29, func、date、reg 和 err 類型不能正常拷貝 */ export function deepCopyJson(source: Object): Object {const newObject = {};for (const key of Object.keys(source)) {newObject[key] = typeof source[key] === 'object' ? deepCopyJson(source[key]) : source[key];}return newObject; }

mergeObject

合并兩個對象,將dest合并到source中,修改source中的屬性值,不會修改dest中的屬性值。

/** * @method 合并json對象,遇到相同元素級屬性,以source為準 * @param source 被合并的json對象 * @param dest json對象,將此json的屬性遞歸賦值給source * @return void 不返還新的值而是直接改變source * @author vincent 2018-12-01 * @version 0.0.0 * @example * @log 1. vincent,2018-12-01,創建 */ export function mergeJson(source: Object, dest: Object): void {for (const key of Object.keys(dest)) {if (source[key] === undefined) { // 不沖突的,直接賦值source[key] = dest[key];continue;}// 沖突了,如果是Object,看看有么有不沖突的屬性// 不是Object 則以main為主,忽略即可。故不需要elseif (isJson(dest[key])) {// arguments.callee 遞歸調用,并且與函數名解耦mergeJson(source[key], dest[key]);}} }/** * @method 是否是json對象 * @param target 需要被判斷的類型 * @return 如果是json對象返回 true,如果不是返回 false * @author vincent 2018-12-01 * @version 0.0.0 * @example * @log 1. vincent,2018-12-01,創建 */ export function isJson(target): boolean {return typeof target === 'object' && target.constructor === Object; }

總結

以上是生活随笔為你收集整理的typescript或javascript深拷贝Object json的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。