2011-08-24 23 views
1

我有兩個數組合並兩個數組:如何比較jQuery中

existing_names = username1, username2, username3; 

new_names = username1, username4, username5; 

我的輸出應該是:

new_names = username1, username2, username3, username4, username5; 

使用jQuery我怎麼能做到這一點...

+0

您可以用JavaScript做到這一點...看看這個問題 http://stackoverflow.com/questions/1584370/how-to-merge-two-arrays-in-javascript –

回答

0

使用snook的OC功能,使用純Javascript可以輕鬆實現。可能被做短用jQuery,但總是有趣的事情,而不:)

DEMO:http://jsfiddle.net/wesbos/MvurR/

var existing_names = ["username1", "username2", "username3"]; 

var new_names = ["username1", "username4", "username5"]; 

/* http://snook.ca/archives/javascript/testing_for_a_v */ 

function oc(a) 
{ 
    var o = {}; 
    for(var i=0;i<a.length;i++) 
    { 
    o[a[i]]=''; 
    } 
    return o; 
} 


for (var i=0; i < existing_names.length; i++) { 
    if (!(existing_names[i] in oc(new_names))) { 
     new_names.push(existing_names[i]); 
    } 
} 

console.log(new_names); 
+2

你真的在循環的每次迭代中創建所有new_names的對象嗎?這不是非常有效。你真的應該在循環之前移動oc函數調用。 – jfriend00

0

http://jsfiddle.net/AYgNW/3/

var existing_names = ['username1','username2','username3']; 
var new_names = ['username1','username4','username5']; 

function mergeArrays(a1, a2) { 

    var len1 = a1.length; 
    var len2 = a2.length; 
    var found = false; 

    for (var x = 0; x < len2; x += 1) { 

     found = false; 

     for (var y = 0; y < len1; y += 1) { 
      if (a1[y] === a2[x]) { 
       found = true; 
       break; 
      } 
     } 

     if (! found) { 
      a1.push(a2[x]); 
     } 

    } 

    return a1; 

} 

// merge arrays 
new_names = mergeArrays(new_names, existing_names); 

// sort the resulting array 
new_names.sort(); 

for (var x = 0; x < new_names.length; x += 1) { 
    document.write(new_names[x] + ', '); 
}