我有兩個數組合並兩個數組:如何比較jQuery中
existing_names = username1, username2, username3;
new_names = username1, username4, username5;
我的輸出應該是:
new_names = username1, username2, username3, username4, username5;
使用jQuery我怎麼能做到這一點...
我有兩個數組合並兩個數組:如何比較jQuery中
existing_names = username1, username2, username3;
new_names = username1, username4, username5;
我的輸出應該是:
new_names = username1, username2, username3, username4, username5;
使用jQuery我怎麼能做到這一點...
使用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);
你真的在循環的每次迭代中創建所有new_names的對象嗎?這不是非常有效。你真的應該在循環之前移動oc函數調用。 – jfriend00
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] + ', ');
}
您可以用JavaScript做到這一點...看看這個問題 http://stackoverflow.com/questions/1584370/how-to-merge-two-arrays-in-javascript –