{"version":3,"sources":["../../src/object/customIterable.ts"],"names":["CustomIterable","source","filter","index","key","value","obj","f","newObj"],"mappings":";;;;AAmBA,IAAMA,CAAAA,CAAN,KAAqB,CAGjB,WAAmBC,CAAAA,CAAAA,CAAuBC,CAA2C,CAAA,CAAlE,IAAAD,CAAAA,MAAAA,CAAAA,CAAAA,CAAuB,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CACtC,IAAK,CAAA,cAAA,CAAiB,OAAO,OAAQD,CAAAA,CAAM,EAC/C,CAEA,CAAC,MAAA,CAAO,QAAQ,CAAA,EAAI,CAChB,IAAIE,CAAQ,CAAA,CAAA,CACZ,OAAO,CACH,KAAM,IAAM,CACR,KAAOA,CAAAA,CAAO,IAAK,CAAA,cAAA,CAAe,MAAQ,EAAA,CACtC,GAAM,CAACC,CAAKC,CAAAA,CAAK,CAAI,CAAA,IAAA,CAAK,eAAeF,CAAK,CAAA,CAE9C,GADAA,CAAAA,EAAAA,CACI,IAAK,CAAA,MAAA,CAAOC,CAAKC,CAAAA,CAAK,CACtB,CAAA,OAAO,CAAE,KAAA,CAAO,CAAE,CAACD,CAAG,EAAGC,CAAM,CAAG,CAAA,IAAA,CAAM,KAAM,CAEtD,CACA,OAAO,CAAE,IAAA,CAAM,IAAK,CACxB,CACJ,CACJ,CACJ,CAEMC,CAAAA,CAAAA,CAAM,IAAIN,CAAAA,CAAe,CAC3B,CAAA,CAAG,CACH,CAAA,CAAA,CAAG,CACH,CAAA,CAAA,CAAG,CACH,CAAA,CAAA,CAAG,CACH,CAAA,CAAA,CAAG,EACH,CAAG,CAAA,CAAA,CACH,CAAG,CAAA,CACP,CAAG,CAAA,CAACI,CAAKC,CAAAA,CAAAA,GAAUA,CAAS,EAAA,CAAC,CAE7B,CAAA,IAAA,IAAQE,CAAKD,IAAAA,CAAAA,CACT,QAAQ,GAAI,CAAA,IAAA,CAAKC,CAAC,CAAA,CAEtB,IAAMC,CAAAA,CAAS,CAAE,GAAGF,CAAI,CAAA,CAExB,OAAQ,CAAA,GAAA,CAAIE,CAAM,CAAA","file":"customIterable.mjs","sourcesContent":["\n/**\n * 创建一个自定义的迭代器,实现 Iterable 接口，可以进行选择性的过滤迭代\n * \n@example\n  const obj = new CustomIterable({ \n    a: 1, \n    b: 2,\n    c: 3,\n    d: 4,\n    e: 5,\n    f: 6,\n    g: 7,\n}, (key, value) => value <= 3)\n  \nconst newObj = { ...obj };\nconsole.log(newObj); // 输出：{ a: 1, b: 2 ,c : 3}\n * \n */\nclass CustomIterable {\n    private _sourceEntries: [string, any][];\n\n    constructor(public source: object, public filter: (key: any, value: any) => boolean) {\n        this._sourceEntries = Object.entries(source);\n    }\n\n    [Symbol.iterator]() {\n        let index = 0;\n        return {\n            next: () => {\n                while (index< this._sourceEntries.length) {\n                    const [key, value] = this._sourceEntries[index];\n                    index++;\n                    if (this.filter(key, value)) {\n                        return { value: { [key]: value }, done: false };\n                    }\n                }\n                return { done: true };\n            }\n        };\n    }\n}\n\nconst obj = new CustomIterable({\n    a: 1,\n    b: 2,\n    c: 3,\n    d: 4,\n    e: 5,\n    f: 6,\n    g: 7,\n}, (key, value) => value <= 3);\n\nfor(let f of obj){\n    console.log(\"f=\",f)\n}\nconst newObj = { ...obj };\n\nconsole.log(newObj); // 输出：{ a: 1, b: 2, c: 3 }\n"]}