实现一个方法sameNumbers,找出同时存在于两个数组的所有数字

#实现一个方法sameNumbers,找出同时存在于两个数组的所有数字

  • 需要处理异常传参,情况不限于:
    • 未传入arr1或arr2
    • arr1或arr2不是数组
  • 字符串格式的数字需要转为数字,如:'1'需先转化为1再进行查重比较
  • 返回结果需要过滤所有非数字项

你题目的解答代码如下:

function sameNumbers(arr1,arr2) {
    if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
        alert("arr1或arr2不是数组");
        return;
    }
    var a = [];
    arr1.forEach(function(v, i){
        if (typeof(v)!="Number") {
            v = parseFloat(v)
        }
        if (!isNaN(v)) {
            a.push(v);
        }
    });
    var b = [];
    arr2.forEach(function(v, i){
        if (typeof(v)!="Number") {
            v = parseFloat(v)
        }
        if (!isNaN(v)) {
            b.push(v);
        }
        });
    var res = a.filter(x => b.indexOf(x)!=-1);
    console.log(res);
}

sameNumbers([1,"2","A",3],["3",4,false,2]);
 

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img