js如何比较两个数组相同的元素与位置?
比如a数组【1,2,3】
b数组【1,3,2】
那么相同的只有一个,就是1,第二第三位置不一样,怎么通过js实现
网友回复
<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>
<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>