লোড্যাশ অ্যারে থেকে সদৃশগুলি সরিয়ে ফেলুন


232

এটি আমার তথ্য:

[
    {
        url: 'www.example.com/hello',
        id: "22"    
    },
    {
        url: 'www.example.com/hello',
        id: "22"    
    },
    {
        url: 'www.example.com/hello-how-are-you',
        id: "23"    
    },
    {
        url: 'www.example.com/i-like-cats',
        id: "24"    
    },
    {
        url: 'www.example.com/i-like-pie',
        id: "25"    
    }
]

লোডাসের সাহায্যে, আমি কীভাবে সদৃশ আইডি কী দিয়ে জিনিসগুলি সরিয়ে ফেলতে পারি? ফিল্টার সহ কিছু, মানচিত্র এবং অনন্য, তবে পুরোপুরি নিশ্চিত নয়।

আমার আসল ডেটা সেটটি অনেক বড় এবং আরও কী রয়েছে তবে ধারণাটি একই রকম হওয়া উচিত।

উত্তর:


439

_.uniqueলোড্যাশ 4.0.০.০-তে এই ব্রেকিং পরিবর্তন হিসাবে বর্তমান সংস্করণটির জন্য আর কাজ করবে না । ক্রিয়াকলাপটিকে _.উইনক, _.সোর্টড ইউনিক, _.সোর্টর্ড ইউনিক বি, এবং _ ইউনিকবিতে বিভক্ত করা হয়েছিল

আপনি _.uniqByউভয় দ্বারা ব্যবহার করতে পারে

_.uniqBy(data, function (e) {
  return e.id;
});

অথবা

_.uniqBy(data, 'id');

ডকুমেন্টেশন: https://lodash.com/docs#uniqBy


লোডাসের পুরানো সংস্করণগুলির জন্য (<4.0.0)

ধরে নিলাম যে ডেটাটি দ্বারা অনন্য হওয়া উচিত idএবং আপনার ডেটা dataভেরিয়েবলের মধ্যে সঞ্চয় করা রয়েছে , আপনি অনন্য () ফাংশনটি এর মতো ব্যবহার করতে পারেন :

_.unique(data, function (e) {
  return e.id;
});

বা সহজভাবে

_.uniq(data, 'id');

1
লড্যাশ 4.0.০.১ ডক্স এটি ইউনিকবি দ্বারা পরিবর্তন করেছে। শুধুমাত্র ইউনিক ব্যবহার করে আমার জীবনের জন্য কাজ করার জন্য উপরের উদাহরণটি পাইনি।
উইল Lovett

2
লোডাস ৪.x সহ, ইউনিট () কেবলমাত্র একটি প্যারামিটার গ্রহণ করে, যা একটি অ্যারে। সুতরাং @ উইললওয়েট যেমন বলেছিলেন, আমরা এই সমস্যা সমাধানের জন্য ইউনিকবি () ব্যবহার করতে পারি।
এরস্ফুরিল

1
ওহ ছেলে। কেন, ওহ কেন, এটি uniqযা হওয়া উচিত তার পরিবর্তে আপনাকে হাঁটু-কাতারে উচ্চারণ করা হয়, unique...
জোশ এম।

56

আপনি লড্যাশ পদ্ধতিটি ব্যবহার করতে পারেন _ ইউনিক, এটি লোডাশের বর্তমান সংস্করণে উপলব্ধ 4..১17.২।

উদাহরণ:

var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];

_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]

আরও তথ্য: https://lodash.com/docs/#uniqWith


6
un যাক uniqObjects = _.uniqBy (ডক্স, ফাংশন (ঙ) ex প্রাক্তন + ey;}) ফিরে আসুন;
Objects

2
হ্যাঁ তবে আপনাকে ইউনিকবি-র সাথে প্রথম যুক্তি হিসাবে একটি বৈশিষ্ট্যটি পাস করতে হবে, যা আপনি ইতিমধ্যে জানেন না এমন কয়েকটি বৈশিষ্ট্যের উপর ভিত্তি করে আপনি এটি অনন্য চাইলে
সুবিধাজনক

10

অথবা সাধারণ অ্যারের জন্য কেবল ইউনিয়নটি ব্যবহার করুন ।

_.union([1,2,3,3], [3,5])

// [1,2,3,5]

1
আমি এই উত্তর পছন্দ। এটি সর্বাধিক পঠনযোগ্য নয়, তবে আপনি যদি গণিতের দৃষ্টিকোণ থেকে এটি সম্পর্কে চিন্তা করেন তবে এটি কার্যত কার্যকর হয়। _.union([1, 2, 2, 1, 3]) => [1, 2, 3]
Sepehr

5

কেবলমাত্র _.uniqBy () ব্যবহার করুন । এটি একটি অ্যারের সদৃশ সংস্করণ তৈরি করে।

এটি একটি নতুন উপায় এবং 4.0.0 সংস্করণ থেকে উপলব্ধ from

_.uniqBy(data, 'id');

অথবা

_.uniqBy(data, obj => obj.id);

4

লড্যাশ সংস্করণ 4+ এর সাহায্যে আপনি নির্দিষ্ট সম্পত্তি বা এর মতো পুরো অবজেক্টের দ্বারা সদৃশ বস্তুগুলি সরিয়ে ফেলবেন:

var users = [
  {id:1,name:'ted'},
  {id:1,name:'ted'},
  {id:1,name:'bob'},
  {id:3,name:'sara'}
];
var uniqueUsersByID = _.uniqBy(users,'id'); //removed if had duplicate id
var uniqueUsers = _.uniqWith(users, _.isEqual);//removed complete duplicates

উত্স: https://www.codegrepper.com/?search_term=Lodash+remove+ নকল ++ থেকে + অ্যারে



1

একটি সাধারণ অ্যারে জন্য, আপনি ইউনিয়ন পদ্ধতির আছে, তবে আপনি এটি ব্যবহার করতে পারেন:

_.uniq([2, 1, 2]);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.