正确答案在此

来源:1-6 编程练习

weixin_慕沐3317972

2021-05-18 18:27

        function arraysSimilar(arr1, arr2){

            if (arr1.length !== arr2.length) {

                return false;

            }else{

                for (el1 of arr1) {

                    let type1 = Object.prototype.toString.call(el1);

                    let stepPaired = false;

                    for (el2 of arr2) {

                        let type2 = Object.prototype.toString.call(el2);

                        if (type1 === type2) {

                            const index = arr2.indexOf(el2);

                            arr2.splice(index,1);

                            stepPaired = true;

                            break;

                        } 

                    }

                    

                    if (!stepPaired) {

                        return false;

                    }

                }

            }

            

            return true;

        }


写回答 关注

2回答

  • 瓦洛佳YUP
    2021-12-01 10:26:59

       /*

     * param1 Array

     * param2 Array

     * return true or false

     */

    function arraysSimilar(arr1, arr2) {

    if (

    Object.prototype.toString.apply(arr1) === '[object Array]' &&

    Object.prototype.toString.apply(arr2) === '[object Array]' &&

    arr1.length === arr2.length

    ) {

    var arr_1 = [];

    var arr_2 = [];

    for (var i = 0; i < arr1.length; i++) {

    arr_1[i] = Object.prototype.toString.apply(arr1[i]);

    arr_2[i] = Object.prototype.toString.apply(arr2[i]);

    }

    arr_1 = arr_1.sort();

    arr_2 = arr_2.sort();

    if (JSON.stringify(arr_1) === JSON.stringify(arr_2)) {

    return true;

    } else {

    return false;

    }

    } else {

    return false;

    }

    }



    //兄台的代码,我阅读之后觉得有问题,如果两个数组元素的类型是一致的,但是由于顺序不同就会运行失败!我运行了一下试试,确实没成功!

  • _OLY
    2021-05-20 23:25:34
    <!DOCTYPE HTML><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=gb18030">    <title>Untitled Document</title>    </head><body>    <script type="text/javascript">           /*         * param1 Array          * param2 Array         * return true or false         */        function arraysSimilar(arr1, arr2){            if(!(arr1 instanceof Array) || !(arr2 instanceof Array)) {                return false;            }            if(arr1.length != arr2.length) {                return false;            }            var arr1Lx = [];            var arr2Lx = [];            for(var i = 0;i<arr1.length;i++) {                arr1Lx.push(Object.prototype.toString.apply(arr1[i]));            }            for(var j = 0;j<arr2.length;j++) {                arr2Lx.push(Object.prototype.toString.apply(arr2[j]));            }            arr1Lx = Array.from(new Set(arr1Lx));            arr2Lx = Array.from(new Set(arr2Lx));            let arr3Lx = Array.from(new Set(arr1Lx.concat(arr2Lx)));            if ((arr2Lx.length != arr1Lx.length) || (arr3Lx.length != arr1Lx.length) || (arr3Lx.length != arr2Lx.length)) {                return false;            } else {                console.log('类型一样');                return true;            }                }    </script>    <script src="testData.js"></script></body></html>


JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281102 学习 · 1020 问题

查看课程

相似问题