2010-11-18 90 views
0

有没有办法匹配多个数组并删除相似的字符串。Javascript匹配数组

array1 = ["apple", "cherry", "strawberry"]; 

array2 = ["vanilla", "chocolate", "strawberry"]; 
+3

你所说的类似的意思做的,从阵列您删除?都?请注意,您在当前数组中没有任何完全匹配,所以我想知道您是如何定义类似的。 – user113716 2010-11-18 21:33:08

+0

糟糕,拼写错误。 array1是原来的,所以从array2中删除匹配的字符串。 – Alex 2010-11-18 21:45:37

回答

2

你的问题不是很清楚,所以这里有两种解决方案:

鉴于["apple", "cherry", "strawberry"]["vanilla", "chocolate", "strawberry"]你想["apple", "cherry", "strawberry", "vanilla", "chocolate"]

function combineWithoutDuplicates(array1, array2) { 

    var exists = {}; 
    var unique = []; 

    for(var i = 0; i < array1.length; i++) { 
     exists[array1[i]] = true; 
     unique.push(array1[i]); 
    } 

    for(var i = 0; i < array2.length; i++) { 
     if(!exists[array2[i]]) { 
     unique.push(array2[i]); 
     } 
    } 

    return unique; 
} 

还是你想["vanilla", "chocolate"](从array2删除重复) :

function removeDuplicates(array1, array2) { 

    var exists = {}; 
    var withoutDuplicates = []; 

    for(var i = 0; i < array1.length; i++) { 
     exists[array1[i]] = true; 
    } 

    for(var i = 0; i < array2.length; i++) { 
     if(!exists[array2[i]]) { 
     withoutDuplicates.push(array2[i]); 
     } 
    } 

    return withoutDuplicates; 
}