আমার দুটি জিনিস আছে: oldObj
এবং newObj
।
এতে থাকা ডেটাগুলি oldObj
কোনও ফর্ম তৈরি করতে ব্যবহৃত হয়েছিল এবং newObj
এটি ব্যবহারকারী এই ফর্মটিতে ডেটা পরিবর্তন করে এবং এটি জমা দেওয়ার ফলাফল।
উভয় বস্তু গভীর, অর্থাৎ। তাদের বৈশিষ্ট্য যা বস্তু বা বস্তুর অ্যারে ইত্যাদি হয় - সেগুলি এন স্তরগুলি গভীরতর হতে পারে, সুতরাং পৃথক অ্যালগরিদমটি পুনরাবৃত্ত হওয়া দরকার।
এখন আমি শুধু (ইন হিসেবে যোগ / আপডেট / মুছে ফেলা হয়েছে) জিনিসটা না কি পরিবর্তন করা হয়েছে থেকে প্রয়োজন oldObj
থেকে newObj
, কিন্তু সেরা কিভাবে এটি প্রতিনিধিত্ব করে।
এখনও অবধি আমার চিন্তাভাবনাগুলি কেবল একটি genericDeepDiffBetweenObjects
পদ্ধতি তৈরি করা ছিল যা ফর্মটিতে কোনও বস্তু ফিরিয়ে আনবে {add:{...},upd:{...},del:{...}}
তবে আমি ভেবেছিলাম: এর আগে অন্য কারও প্রয়োজন ছিল।
সুতরাং ... কেউ কি এমন কোনও লাইব্রেরি বা কোডের টুকরো সম্পর্কে জানেন যা এটি করবে এবং পার্থক্যটি উপস্থাপনের আরও ভাল উপায় থাকতে পারে (এমনভাবে এখনও জেএসওএন সিরিয়ালযোগ্য)?
হালনাগাদ:
আমি একই তথ্যের কাঠামো ব্যবহার করে আপডেট হওয়া ডেটা উপস্থাপনের আরও ভাল উপায়ের কথা ভেবেছি newObj
, তবে সমস্ত সম্পত্তি মানকে ফর্মের বস্তুতে পরিণত করে:
{type: '<update|create|delete>', data: <propertyValue>}
সুতরাং newObj.prop1 = 'new value'
এবং যদি oldObj.prop1 = 'old value'
এটি সেট হবেreturnObj.prop1 = {type: 'update', data: 'new value'}
আপডেট 2:
অ্যারে [1,2,3]
সমেত বৈশিষ্ট্যগুলি পাওয়া গেলে এটি সত্যই লোমশ হয়ে যায়, যেহেতু অ্যারেটি সমান হিসাবে গণনা করা উচিত [2,3,1]
, যা স্ট্রিং, ইন্ট এবং বুলের মতো মান ভিত্তিক ধরণের অ্যারেগুলির জন্য যথেষ্ট সহজ, তবে এটি আসার সময় হ্যান্ডেল করা সত্যিই কঠিন হয়ে যায় বিষয়বস্তু এবং অ্যারে যেমন রেফারেন্স ধরণের অ্যারে।
সমান হিসাবে পাওয়া উচিত এমন অ্যারেগুলির উদাহরণ:
[1,[{c: 1},2,3],{a:'hey'}] and [{a:'hey'},1,[3,{c: 1},2]]
এই ধরণের গভীর মান সমতার জন্য যাচাই করা কেবল জটিল নয়, পরিবর্তনের যে পরিবর্তনগুলি হতে পারে সে উপস্থাপনের জন্য একটি ভাল উপায় বের করাও।
newObj
কোড রিডিং মানগুলি ডিওমের একটি ফর্ম থেকে উত্পন্ন হয়। রাষ্ট্র বজায় রাখা এবং এটি আরও সহজ করার কয়েকটি উপায় রয়েছে তবে আমি এটিকে অনুশীলন হিসাবে রাষ্ট্রহীন রাখতে চাই। এছাড়াও আমি পূর্বের শিল্পের সন্ধান করছি যে অন্যরা কীভাবে এটি মোকাবেলা করতে পারে তা যদি সত্যিই কারও কাছে থাকে।