2017-06-29 6 views
0

Der Versuch, 2 Arrays zu vergleichen und die Werte anzuzeigen, die nicht übereinstimmen.jquery vergleicht Arrays und zeigt nicht übereinstimmende Werte

mit JQuery, ich habe dies:

$.each(array1, function(key, value) 
{ 
    var index = $.inArray(value, array2); 
    if(index != -1) 
    { 
    console.log(index); 
    } 
}); 

den obigen Code verwenden, kann ich die Array-Elemente finden, die passen.

Zum Beispiel sieht das array1 wie folgt aus:

"TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B" 

Aber die Konsole 3 wird nur die Anzeige 0, 4, weil diese Werte existieren in beiden Arrays:

"GESU687543", "TCNU315504", "TGHU394463" 

array2 wie folgt aussieht .

Ich möchte das genaue Gegenteil tun. Ich muss die Werte suchen, die nicht übereinstimmen, und diese Werte auf der Seite anzeigen.

Also, meine obigen Beispiele verwenden, die Werte, die in der Konsole angezeigt werden sollten, sind:

"TRIU805499", "CMAU029901", "NEUL0325B" 

Ich hoffe, das macht Sinn.

Bitte helfen Sie und danken Ihnen.

** EDIT **

SO riet mir, dass diese Frage möglicherweise ein Duplikat: JavaScript array difference

das gesagt ist, dass Seite Javascript verwendet. Ich benutze hier ausschließlich jquery.

+0

Sie meinen so etwas wie https://lodash.com/docs/4.17.4#difference –

+0

Mögliche Duplikat [JavaScript-Array Differenz] (https: // Stackoverflow. com/questions/1187518/javascript-array-difference) –

+0

jQuery ist JavaScript. Und die Antwort, die Sie angenommen haben, ist JavaScript, nicht jQuery. –

Antwort

2

Sie müssen die Arrays wechseln und iterieren array2 für die Filterung mit dem Index array1.

var array1 = ["GESU687543", "TCNU315504", "TGHU394463"], 
 
    array2 = ["TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"], 
 
    result = array2.filter(function (a) { 
 
     return array1.indexOf(a) === -1; 
 
    }); 
 

 
console.log(result);

ES6 mit Array#includes: (! Index = -1)

var array1 = ["GESU687543", "TCNU315504", "TGHU394463"], 
 
    array2 = ["TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"], 
 
    result = array2.filter(a => !array1.includes(a)); 
 

 
console.log(result);

+0

Testen Sie den Code jetzt .... –

+0

bruh .... Ich sage aber ... Sie .... sind ... ein ... Genie. Danke mein Herr.Das hat bei mir funktioniert. –

-1

Also, warum Sie nicht ändern, nur die, wenn zu if (index === -1).

0

Sie sollten Array2, nicht Array1 iterieren.

Beispiel:

var array1 = ["GESU687543", "TCNU315504", "TGHU394463"]; 
var array2 = ["TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"]; 

array2.forEach(value => array1.indexOf(value) === -1 && console.log(value)); 
1
var array3; 
for(var i=0, l=array1.length; i<l;i++){ 
    for(var j=0, k=array2.length; j<k; j++){ 
     if(array1[i] != array[2]){ 
      aray3.push(array[i]); 
     } 
    } 
} 
+0

Bitte versuchen Sie zu vermeiden, nur Code als Antwort zu verlieren und versuchen Sie zu erklären, was es macht und warum. Ihr Code ist möglicherweise nicht offensichtlich für Personen, die nicht über die entsprechende Codiererfahrung verfügen. Bitte bearbeiten Sie Ihre Antwort, um [Klarstellung, Kontext und versuchen Sie, Einschränkungen, Annahmen oder Vereinfachungen in Ihrer Antwort zu erwähnen.] (Https://stackoverflow.com/help/how-to-answer) – Frits

+0

praveen das ist großartig können Sie auch Geben Sie die Antwort, um alle Werte, die nicht ähnlich sind in Array4 .. so Array3 sind alle Werte, die ähnlich sind und Array4 werden Werte, die sich geändert haben ... – user3548161

Verwandte Themen