+
80
-

js如何比较两个数组相同的元素与位置?

js如何比较两个数组相同的元素与位置?

比如a数组【1,2,3】

b数组【1,3,2】

那么相同的只有一个,就是1,第二第三位置不一样,怎么通过js实现

网友回复

+
0
-
<script type="text/javascript">

    var str1 = "good, site, bfw";
    var str2 = "good, site, bfw123";
    var result = diff(str1, str2, ','); // 对象
    alert(result);
    var rs = "" + result; // " bfw, bfw123"
    var df1 = result.diff1; // [" bfw"]
    alert(df1);
    var df2 = result.diff2; // [" bfw123"]
    alert(df2);

    // 比较2个字符串内元素的不同(字符1, 字符2, 分隔符可选)
    function diff(str1, str2, separator) {
        //
        str1 = str1 || "";
        str2 = str2 || "";
        separator = separator || ",";
        // arr中有ele元素
        function hasElement(arr, ele) {
            // 内存循环
            var hasItem1 = false;
            for (var i2 = 0; i2 < arr.length; i2++) {
                //
                var item2 = arr[i2] || "";
                if (!item2) {
                    continue;
                }
                //
                if (ele == item2) {
                    hasItem1 = true;
                    break;
                }
            }
            return hasItem1;
        };
        function inAnotB(a, b) {
            // 在A中,不在B中
            var res = [];
            for (var i1 = 0; i1 < a.length; i1++) {
                var item1 = a[i1] || "";
                if (!item1) {
                    continue;
                }
                var hasItem1 = hasElement(b, item1);
                if (!hasItem1) {
                    res.push(item1);
                }
            }
            return res;
        };
        //
        var list1 = str1.split(",");
        var list2 = str2.split(",");
        //
        var diff1 = inAnotB(list1, list2);
        var diff2 = inAnotB(list2, list1);

        // 返回结果
        var result = {
            diff1: diff1,
            diff2: diff2,
            separator: separator,
            toString: function() {
                //
                var res = this["diff1"].slice(0);
                res = res.concat(this["diff2"]);
                //
                return res.join(this["separator"]);
            }
        };
        //
        return result;
    };

</script>

+
0
-
<script type="text/javascript">
    var arr1 = ["good", "site", "bfw"];
    var arr2 = ["good", "site3", "bfw"];
    var samecount = 0;
    for (var i = 0; i < arr1.length; i++) {
        if (arr1[i] == arr2[i]) {
            samecount++;
        }
    }

    alert("same element count:"+samecount);
</script>

我知道答案,我要回答