最近开始跟着FreeCodeCamp 自学js,因为之前Android开发过程中经常接触前端内容,感觉上面的学习节奏还可以接受,到了js算法部分有点困难,主要原因是有些常用方法记忆的问题,和java区别还是蛮大的。以后会经常写些文章记录中间碰到的问题,写一些自己的想法(不一定有解决方案),尽量找到java中差不多的方法,便于记忆。
题意
比较两个数组,然后返回一个新数组,该数组的元素为两个给定数组中所有独有的数组元素。换言之,返回两个数组的差异。
function diff(arr1, arr2) {
var newArr = [];
// Same, same; but different.
var arr1ToArr2=arr1.filter(function(item){
return arr2.indexOf(item)===-1;
});
var arr2ToArr1=arr2.filter(function(item){
return arr1.indexOf(item)===-1;
});
return arr1ToArr2.concat(arr2ToArr1);
}
记录下几个方法:
arr.indexOf(item) : 某一项在数组中的位置索引,如果数组中不存在,返回-1,相当于java中的list.contains(item);
arr1.concat(arr2) : 拼接两个数组,相当于 list1.addAll(list2);
filter 根据自定义条件进行过滤,RxJava中接触过。