vara1=[{path:'home'},{path:'index'}]vara2=[{path:'home'},{path:'index'},{path:'delpage'}]两个数组循环,删除不同的对象元素期望a2=[{path:'home'},{path:'index'}]
2 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
vara1=[{path:'home'},{path:'index'}]vara2=[{path:'home'},{path:'index'},{path:'delpage'}]//对比数组functionfun(arr1,arr2){for(leti=0;ifor(letj=0;j //由于对象不能直接比较,可以先转换成字符串,再对比 if(JSON.stringify(arr2[i])===JSON.stringify(arr1[j])){arr2.splice(i,1)}}}returnarr2}console.log(fun(a1,a2))
慕雪6442864
TA贡献1812条经验 获得超5个赞
@tenggouwa的解法虽然可行,但是效率不高,为n^2,我对javascript不熟,这里只提供思路,可以先对两个数组分别进行排序,排序算法有很多比n^2效率高的,排序完之后对两个数组遍历一遍即可(复杂度为n),所以两个加起来的复杂度是小于n^2的,尤其是n很大的时候。遍历的策略大致是两个指针分别指向排完序的数组的起始位置,然后比较,如果相等,则结果添加此元素,如果不等,则移动其中排序靠前的指针(也就是解引用后值较小的,如果按照从小到大排序的话),如此遍历即可。代码你可以自己实现,应该不复杂。
添加回答
举报
0/150
提交
取消