2016-12-01 33 views
0

我有兩個數組,一個oldArray和一個newArray。它們都是平坦的並且長度相同。我想要一個函數來檢查newArray是否有重複,並且我想要包含重複項的位置與oldArray中的位置相比較。查找兩個數組的重複位置,javascript

實施例:

var oldArr = ['abc', null, 'dd', null, 'cc] 
var newArr = ['abc', null, 'dd', 'dd', 'cc] 

dd是重複的,並在3位發生相比老陣列。有沒有什麼聰明的方法來做到這一點?確定在答案中使用下劃線/ lodash。

+1

您是否嘗試過自己什麼? – lonesomeday

+0

你是從0還是從1開始計數? – user44

+0

@lonesomeday是的,數小時 – Per

回答

0

反覆調整newArr使用Array#reduce,並存儲每個元素的位置,即在另一個指標發現,在oldArr

var oldArr = ['abc', null, 'dd', null, 'cc']; 
 
var newArr = ['abc', null, 'dd', 'dd', 'cc']; 
 

 
var duplicates = newArr.reduce(function(d, e, i) { 
 
    var oldIndex = oldArr.indexOf(e); 
 
    oldIndex !== -1 && oldIndex !== i && d.push(i); 
 
    
 
    return d; 
 
}, []); 
 
       
 
console.log(duplicates);

0
function find(oldA, newA){ 
    var ret = {}; 
    for(var i = 0; i < newA.length; i++){ 
     if(newA.match(newA[i]).lenth > 1){ 
     ret.value = newA[i]; res.pos = newA[i] === old[i]?newA.lastIndexOf(ret.value)?i;} 
return ret; 
} 

    var res = find(oldArray, newArray)