সরানডুপ্লিকেট () বস্তুর একটি অ্যারে নেয় এবং কোনও সদৃশ অবজেক্ট (আইডি সম্পত্তির উপর ভিত্তি করে) ছাড়াই একটি নতুন অ্যারে প্রদান করে।
const allTests = [
{name: 'Test1', id: '1'},
{name: 'Test3', id: '3'},
{name: 'Test2', id: '2'},
{name: 'Test2', id: '2'},
{name: 'Test3', id: '3'}
];
function removeDuplicates(array) {
let uniq = {};
return array.filter(obj => !uniq[obj.id] && (uniq[obj.id] = true))
}
removeDuplicates(allTests);
প্রত্যাশিত ফলাফল:
[
{name: 'Test1', id: '1'},
{name: 'Test3', id: '3'},
{name: 'Test2', id: '2'}
];
প্রথমত, আমরা ভেরিয়েবল ইউনিকের মান একটি খালি বস্তুতে সেট করি।
এরপরে, আমরা বস্তুর অ্যারে দিয়ে ফিল্টার করব ফিল্টার সমস্ত উপাদানগুলির সাথে একটি নতুন অ্যারে তৈরি করে যা সরবরাহিত ফাংশন দ্বারা প্রয়োগ করা পরীক্ষায় উত্তীর্ণ হয়।
return array.filter(obj => !uniq[obj.id] && (uniq[obj.id] = true));
উপরে, আমরা && এর শর্ট সার্কিট কার্যকারিতা ব্যবহার করি। যদি && এর বাম দিকটি সত্য হিসাবে মূল্যায়ন করে তবে এটি && এর ডানদিকে মানটি দেয়। যদি বাম দিকটি মিথ্যা হয় তবে এটি && এর বাম দিকে যা আছে তা ফিরিয়ে দেয়।
প্রতিটি বস্তুর (অবজেক্ট) জন্য আমরা অজেক্ট.আইডির মান হিসাবে চিহ্নিত একটি সম্পত্তিটির জন্য ইউনিক পরীক্ষা করে দেখি (এই ক্ষেত্রে, প্রথম পুনরাবৃত্তিতে এটি সম্পত্তি '1' যাচাই করবে)) আমরা এটির ফিরে আসার বিপরীতে চাই (হয় সত্য বা মিথ্যা) যে কারণে আমরা ব্যবহার করি! ইন! ইউনিক [আপত্তি.আইডি]। যদি ইউনিকের আইডি সম্পত্তিটি ইতিমধ্যে থাকে তবে এটি সত্য ফেরায় যা মিথ্যা (!) এর মূল্যায়ন করে ফিল্টার ফাংশনটিকে সেই আপত্তিটি যুক্ত না করার জন্য বলে। তবে, যদি এটি আপজেড.আইডি সম্পত্তিটি না খুঁজে পায় তবে এটি মিথ্যা ফিরিয়ে দেয় যা তারপরে সত্য (!) এর কাছে মূল্যায়ন করে এবং সবকিছুকে &&, বা (ইউনিক [আপত্তি.আইডি] = সত্য) এর ডানদিকে ফিরিয়ে দেয়। এটি একটি সত্যবাদী মান, যা পরিশোধক অ্যারেতে এই আপত্তি যুক্ত করতে ফিল্টার পদ্ধতিটি বলছে এবং এটি ইউনিকের সাথে {1: সত্য} বৈশিষ্ট্যটি যুক্ত করে। এটি নিশ্চিত করে যে একই আইডি সহ অন্য কোনও আপত্তি উদাহরণ পুনরায় যুক্ত করা হবে না।