{"version":3,"sources":["../src/object/isLikeObject.ts"],"names":["isLikeObject","obj","baseObj","options","strict","deep","assignObject","srcKeys","baseKeys","isLike","key"],"mappings":";;;;AAyBO,SAASA,CAAAA,CAAaC,EAAyCC,CAA4CC,CAAAA,CAAAA,CAAqC,CACnJ,GAAM,CAAC,OAAAC,CAAS,CAAA,KAAA,CAAM,KAAAC,CAAO,CAAA,KAAK,EAAIC,CAAa,CAAA,GAAGH,CAAO,CAAA,CAC7D,GAAGF,CAAAA,GAAQC,CAAS,CAAA,OAAO,MAC3B,GAAG,OAAOD,GAAS,QAAY,EAAA,OAAOC,GAAa,QAAU,CAAA,OAAO,MACpE,CAAA,IAAMK,CAAU,CAAA,MAAA,CAAO,KAAKN,CAAG,CAAA,CACzBO,EAAW,MAAO,CAAA,IAAA,CAAKN,CAAO,CACpC,CAAA,GAAGE,CAAUG,EAAAA,CAAAA,CAAQ,MAAWC,GAAAA,CAAAA,CAAS,OAAQ,OAAO,MAAA,CACxD,IAAIC,CAAS,CAAA,IAAA,CACb,QAAUC,CAAOF,IAAAA,CAAAA,CACb,GAAGE,CAAOT,IAAAA,CAAAA,CACHI,GAAQ,OAAOJ,CAAAA,CAAIS,CAAG,CAAO,EAAA,QAAA,EAAY,OAAOR,CAAQQ,CAAAA,CAAG,CAAO,EAAA,QAAA,GACjED,CAAST,CAAAA,CAAAA,CAAaC,EAAIS,CAAG,CAAA,CAAER,EAAQQ,CAAG,CAAA,CAAEP,CAAO,CAGvDI,CAAAA,CAAAA,CAAAA,CAAQ,MAAOA,CAAAA,CAAAA,CAAQ,OAAQG,CAAAA,CAAG,EAAE,CAAC,CAAA,CAAA,YAE9B,MAKf,CAAA,OAAGH,EAAQ,MAAO,CAAA,CAAA,EAAKH,CAAe,CAAA,KAAA,CAC/BK,CACX","file":"chunk-K3M73HFO.mjs","sourcesContent":["/**\n * \n * 判断两个对象是否相似\n * \n * 注意：\n * - 不进行值比较，只比较对象的键是否相同\n * - 严格比较，两个对象的键的数量和名称必须相同\n * - 非严格比较，srcObj的键的数量可以大小等于targetObj的键的数量\n * \n * isLikeObject({a:1,b:2},{a:1,b:2}) // true\n * isLikeObject({a:1,b:2},{a:1,b:3}) // true\n * isLikeObject({a:1,b:2},{a:1}) // true\n * isLikeObject({a:1,b:2},{a:1}，{strict:true})    // true 严格比较\n *  isLikeObject({a:1,b:2},{a:1}，{strict:false})    // false 非严格比较\n * \n */\n\nimport { assignObject } from \"./assignObject\";\n\nexport interface IsLikeObjectOptions{\n    strict?:boolean                 // 是否严格比较\n    deep?:boolean                   // 是否深度比较, 对象的值为对象时，是否递归比较\n}\n\n\nexport function isLikeObject(obj:Record<string | number | symbol,any>,baseObj:Record<string |number | symbol,any>,options?:IsLikeObjectOptions):boolean{\n    const {strict = false,deep = false} = assignObject({},options);\n    if(obj === baseObj) return true;\n    if(typeof(obj) !== \"object\" || typeof(baseObj) !== \"object\") return false;\n    const srcKeys = Object.keys(obj);\n    const baseKeys = Object.keys(baseObj);\n    if(strict && srcKeys.length !== baseKeys.length) return false;\n    let isLike = true\n    for(const key of baseKeys){\n        if(key in obj){\n            if(deep && typeof(obj[key]) === \"object\" && typeof(baseObj[key]) === \"object\"){\n                isLike = isLikeObject(obj[key],baseObj[key],options)\n            }\n            // 已经比较过的键，从srcKeys中删除\n            srcKeys.splice(srcKeys.indexOf(key),1)\n        }else{\n            return false;\n        }\n    }\n    // 如果srcKeys中还有剩余的键，说明srcObj的键的数量大于targetObj的键的数量\n    // 则在严格比较时，返回false,在非严格比较时，返回true\n    if(srcKeys.length>0 && strict) return false;\n    return isLike\n}"]}