Heim  >  Fragen und Antworten  >  Hauptteil

JavaScript – Duplikate aus einem Array entfernen und ein Array mit den Duplikaten sowie ein weiteres Array mit allen anderen Elementen zurückgeben

<p>Ich möchte einen Filter- oder Reduzierungsvorgang für ein Array ausführen und alle Duplikate im Array basierend auf dem Attribut „Name“ entfernen, wie in diesem Beispiel. Die Beispiele, die ich gesehen habe, sind das Durchlaufen des Arrays und das Beibehalten eines der Duplikate, aber in meinem Fall muss ich sie trennen und die Duplikate in einem Array an den Benutzer zurückgeben, um die Daten zu korrigieren und die anderen verbleibenden Elemente zu verarbeiten. Ich habe unten ein Beispielarray und ein erwartetes Ergebnisarray angegeben. Wenn mir jemand ein Beispiel dafür geben könnte, wäre ich sehr dankbar! Danke! </p> <pre class="brush:php;toolbar:false;">const customer = [ { id:1, Name: „John“, Adresse="123 Straße"}, { id:2, Name: „Alex“, Adresse="456 Straße"}, { id:3, Name: „John“, Adresse="674 Straße"}, { id:4, Name: „Stacy“, Adresse="534 Straße"}, { id:5, Name: „Blair“, Adresse="634 Straße"} ];</pre> <p>Dadurch erhalte ich die folgenden zwei Arrays:</p> <pre class="brush:php;toolbar:false;">[ { id:1, Name: „John“, Adresse="123 Straße"},, { id:3, Name: „John“, Adresse="674 Straße"}, ] Und [ { id:2, Name: „Alex“, Adresse="456 Straße"}, { id:4, Name: „Stacy“, Adresse="534 Straße"}, { id:5, Name: „Blair“, Adresse="634 Straße"} ]</pre> <p><br /></p>
P粉986937457P粉986937457430 Tage vor464

Antworte allen(1)Ich werde antworten

  • P粉322319601

    P粉3223196012023-08-18 14:18:08

    尝试一下

    const customers = [
      { id: 1, name: "John", address: "123 street" },
      { id: 2, name: "Alex", address: "456 street" },
      { id: 3, name: "John", address: "674 street" },
      { id: 4, name: "Stacy", address: "534 street" },
      { id: 5, name: "Blair", address: "634 street" }
    ];
    
    const nameMap = new Map();
    const nonUniqueCustomers = [];
    const uniqueCustomers=[];
    customers.forEach(customer => {
      if (!nameMap.has(customer.name)) {
        nameMap.set(customer.name, []);
      }
      nameMap.get(customer.name).push(customer);
    });
    
    nameMap.forEach(customers => {
      if (customers.length > 1) {
        nonUniqueCustomers.push(...customers);
      }else{
    uniqueCustomers.push(...customers)
      
      }
    });
    
    
    console.log("非唯一顾客:", nonUniqueCustomers);
    console.log("唯一顾客:", uniqueCustomers);

    Antwort
    0
  • StornierenAntwort