題目:給定兩個數組,編寫一個函數來計算它們的交集。
解題思路
第一步:求出兩個數組的均有的元素
定義一個新數組newArr,用于存儲兩個數組的交集。
遍歷nums1數組
遍歷nums2數組
將nums1遍歷的結果與nums2遍歷的結果進行對比
若nums1中的某個元素的與nums2中的元素相同,則利用push方法將該元素存入數組newArr中
第二步:檢查存儲交集元素的數組是否存在重復元素,有的話需要去重,沒有的話則直接輸出newArr
遍歷newArr數組
依次判斷數組中元素第一次出現的位置和最后一次出現的位置是否一致
若一致,則該元素沒有重復
若不一致,則說明有重復元素,利用數組splice方法刪除重復元素,一致為止
注意:數組去重時候,可以刪除前面的元素,也可以刪除后面的元素,如刪除前面的元素,則需要循環考慮數組刪除元素導致數組長度變短帶來的影響,否則則不需要考慮
代碼如下
function repeat(nums1, nums2) {
var newArr = []
for(var i = 0 ; i < nums1.length; i ++){
for(var j = 0 ; j < nums2.length; j ++){
if(nums1[i] === nums2[j]){
newArr.push(nums1[i]);
}
}
}
for(var k = 0; k < newArr.length; k ++){
for(;k !== newArr.lastIndexOf(newArr[k]);){
newArr.splice(k,1)
k --;//消除數組長度變短帶來的影響
}
}
return newArr;
};