2016-12-09 2 views
0

Ich habe zwei Arrays. Die Länge des Arrays A ist fest und die Länge des Arrays B hängt vom DB-Ergebnis ab. Beide Array A und B sind Schlüssel (Zeitstempel) Wert (Anzahl) Paar Arrays. In Array B fehlt ein Zeitstempel. Ich muss den fehlenden Zeitstempelwert auf Null setzen. Wenn der Zeitstempel vorhanden ist, muss ich den Wert verwenden. Wie erreiche ich das?jQuery Schlüsselwert Paar Array eins ersetzen Elemente des zweiten Arrays.

Ex: Array A = {[Zeit: 1481280113, Wert: 0], [Zeit: 1481280053, Wert: 0], ..}

Array B = {[Zeit: 1481280113, Wert: 1234 ], [Zeit: 1481279983, Wert: 123], ..}

Ergebnis A = {[Zeit: 1481280113, Wert: 0], [Zeit: 1481280053, Wert: 0], [Zeit: 1481279983, Wert: 123] ..}

+0

Also Ergebnis A 'Zeit: 1481280113, Wert: 0 'soll der Wert eigentlich' 1234', wenn ich es richtig verstanden habe!? – caramba

+0

Sie sagen, A/B-Array ist aber in der Syntax haben Sie es als Objekt beschrieben {} Ihr Modell definiert als Objekt von Arrays während ideales Modell Array von Objekten sein würde –

+0

Mögliches Duplikat von [Wie zwei Arrays in Javascript fusionieren und Deduplizierung items] (http://stackoverflow.com/questions/1584370/how-to-merge-two-arrays-in-javascript-and-de-duplicate-items) – caramba

Antwort

0

Kennen Sie den MergeSort-Algorithmus? Sie können die mege Teil davon verwenden, so:

function mergeArrays(arr1, arr2){ 
    var a1 = sort array1; //any way you want (EX. 1 < 2 < 3 ...) 
    var a2 = sort array2; //any way you want (EX. 1 < 2 < 3 ...) 
    var result = []; 

    while(a1.length > 0 && a2.length > 0) { 
     if(a1[0] < a2[0]) { result.push(a1.shift()); } 
     if(a1[0] > a2[0]) { result.push(as.shift()); } 
     if(a1[0] == a2[0]) { /* equals, do whatever you want to resolve this */ }  
    } 
    if (a1.length == 0) { result.concat(a2); /* no more elements in a1, append to result the remains of a2*/ } 
    if (a2.length == 0) { result.concat(a1); /* no more elements in a2, append to result the remains of a1*/ } 

    return result 
} 

Dies gibt die fusionierte Array (und sortiert), aber, wenn Sie Duplikate nicht fallen in a1 [0] == a2 [0] Fall, Du wirst diese Duplikate erhalten, also sei vorsichtig.

Verwandte Themen