javascript小练习3

Posted 艳阳天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript小练习3相关的知识,希望对你有一定的参考价值。

1--取出数组1与数组2的共同部分元素

思想1:将数组1放入map中,然后对数组2进行遍历,数组2中的元素在map中不存在时不操作,如果数组2中的元素在map中已经存在,将其push进一个新数组newArr,最后返回该新数组。

function getSameNums(arr1,arr2){
    var mp={};
    var newArr=[];
    for(var i=0;i<arr1.length;i++){
        if(!mp[arr1[i]]){
            mp[arr1[i]]=1;
        }
    }
    for(var i=0;i<arr2.length;i++){
        if(mp[arr2[i]]){
            newArr.push(arr2[i]);
        }
    }
    return newArr;
}
var arr1 = [4,2,1,10,5];
var arr2 = [2,3,4,0,10,5];
console.log(getSameNums(arr1,arr2));

 思想2:将数组1、数组2进行升序排序,然后分别从头开始遍历,比较。如果相等,将该元素push进一个新数组;如果数组1中的该元素大于数组2中的该元素,将该数组1中的该元素与数组2中的下一个元素进行比较;如果数组1中的该元素小于数组2中的该元素,将该数组1中的下一个元素与数组2中的该元素进行比较

    var arr = [];
    arr1.sort(sortby);
    arr2.sort(sortby);
    var i=0;
var j=0; while(i<arr1.length && j < arr2.length){ if(arr1[i] == arr2[j]){ arr.push(arr1[i]); i++;
j++; }else if(arr1[i]>arr2[j]){ j++; }else{ i++; } } return arr; } var arr1 = [4,2,1,10,5]; var arr2 = [2,3,4,0,10,5]; console.log(getSameNums(arr1,arr2));

 思想3:将数组1进行升序排序,定义一个全局新数组,然后遍历数组2,利用二分查找判断数组2中的元素是否在数组1中,不在不操作,在的话将其push进一个新数组,最后返回。调用方法,再打印出该新数组。

function sortby(a,b){
    return a - b ;
}
var newArr = [];
function binarySearch(arr,findVal,leftIndex,rightIndex){ if(leftIndex>rightIndex){ return ; } var midIndex=Math.floor((leftIndex+rightIndex)/2); var midVal=arr[midIndex]; if(midVal>findVal){ binarySearch(arr,findVal,leftIndex,midIndex-1); }else if(midVal<findVal){ binarySearch(arr,findVal,midIndex+1,rightIndex); }else{ newArr.push(findVal) return ; } } function getSameNums(arr1,arr2){ arr1.sort(sortby); for(var i=0;i<arr2.length;i++){ binarySearch(arr1,arr2[i],0,arr1.length-1); } } var arr1 = [4,2,1,10,5]; var arr2 = [2,3,4,0,10,5]; getSameNums(arr1,arr2); console.log(newArr);

 

以上是关于javascript小练习3的主要内容,如果未能解决你的问题,请参考以下文章

小片段中的 ORA-06512 [重复]

sublime text 3 添加 javascript 代码片段 ( snippet )

JavaScript笔试题(js高级代码片段)

微信小程序json数据如何处理?

JavaScript单行代码,也就是代码片段

Javascript 小练习