2016-04-14 5 views
2

Ich habe zwei Arrays.Vergleichen von zwei Arrays vor dem Hinzufügen eines Elements von einem Array zu einem anderen in JavaScript

Ich möchte überprüfen, ob das erste Element in "AddFrom" -Array bereits in "AddTo" -Array ist.

Wenn das "addTo" -Array nicht das erste Element im "addFrom" -Array enthält, möchte ich dieses Element auf "addTo" -Array schieben.

Wenn jedoch das erste Element im "addFrom" -Array bereits im "addTo" -Array ist, möchte ich mit dem zweiten Element im "addFrom" -Array weitermachen und dasselbe tun, bis ich das finde Element im "addFrom" -Array, das nicht im "addTo" -Array ist, das dann in das "addTo" -Array verschoben wird. und ich möchte nur ein Element zum Array "addTo" hinzufügen.

Als Ergebnis möchte ich die "addTo" Array wie folgt aussehen:

var addTo = ["pear", "tangerine", "grape", "orange", "blueberry", "banana"]; 

Wie kann ich dies tun in JavaScript?

+1

bitte das gewünschte Ergebnis hinzufügen. –

Antwort

2

verwenden Sie Array#some() verwenden könnte und die Iteration zu stoppen, wenn ein Element nicht in der addTo Array ist.

var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"], 
 
    addTo = ["pear", "tangerine", "grape", "orange", "blueberry"]; 
 

 
addFrom.some(function (a) { 
 
    if (!~addTo.indexOf(a)) { 
 
     addTo.push(a); 
 
     return true; 
 
    } 
 
}); 
 

 
document.write('<pre> ' + JSON.stringify(addTo, 0, 4) + '</pre>');

-1

können Sie forEach

addFrom.forEach(function(v,i){ 
if(addTo.indexOf(v)<0) 
addTo.push(v); 
} 
) 
+2

Von der Frage: _ "Ich möchte nur ein Element zum Array" addTo "" _ hinzufügen. Dieser Code verschiebt alle fehlenden Elemente von 'addFrom' – Andy

0

https://jsfiddle.net/povvx8hg/

var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"]; 
var addTo = ["pear", "tangerine", "grape", "orange", "blueberry"]; 

for (i = 0; i < addFrom.length; i++) { 
    if(addTo.indexOf(addFrom[i]) != -1) { 
    console.log("Exist"); 
    } else { 
    addTo.push(addFrom[i]); 
    } 
} 

console.log(addTo); 
+0

Überprüfen Sie den Konsolenbrowser! – Cuchu

+0

Sie haben vergessen, nach dem ersten Push aus der Schleife auszubrechen – yezzz

1

Eine einfache Schleife hier den besten Ansatz scheint (ich habe while verwendet).

var i = -1, len = addFrom.length; 
while (++i < len) { 
    if (addTo.indexOf(addFrom[i]) === -1) { 
    addTo.push(addFrom[i]); 
    break; 
    } 
} 

DEMO

0

Kinderleicht

for (index = 0; index < addFrom.length; ++index) { 
    if (addTo.indexOf(addFrom[index]) === -1){ 
     addTo.push(addFrom[index]); 
     break; 
    } 
} 
+0

Stellen Sie sicher, dass Sie Ihre Loop-Variable (n) "var". – Andy

1
var addFrom = ["orange", "banana", "watermelon", "lemon", "peach"]; 
var addTo = ["pear", "tangerine", "grape", "orange", "blueberry"]; 

for(var i = 0; i < addFrom.length; i++){ 
    if(addTo.indexOf(addFrom[i]) === -1){ 
     addTo.push(addFrom[i]); 
     break; 
    }  
} 
Verwandte Themen