一个数组, 如['eat', 'tea', 'tan', 'ate', 'nat', 'bat', 'atb', 'nta', 'etc'], 如果有两项的字符相同 (无关顺序), 则将其置入一个数组中
一个数组, 如['eat', 'tea', 'tan', 'ate', 'nat', 'bat', 'atb', 'nta', 'etc'], 如果有两项的字符相同 (无关顺序), 则将其置入一个数组中, 结果如:
var arr = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat', 'atb', 'nta', 'etc']; var n = 0; var arrNew = new Array() //第一个for循环,用来固定第一个元素的比较 for (var k = 0; k < arr.length; k++) { if (arrNew[n] == undefined) { //初始化一个arrNew数组 arrNew[n] = new Array(arr[k]) } // 设置一个开关,初始值为true var bool2 = true; //在往后的每一次循环中,判断一次arr[k],是否在已经存在的arrNew[n]中 if (k > 0) { for (var x = 0; x < arrNew.length - 1; x++) { //如果存在,则将bool2的值改为false if (isInArray(arrNew[x], arr[k])) { bool2 = false; break; } } } //判断bool2的值,如果是false,则删除arrNew[n],跳出当前循环,开始下次循环 if (!bool2) { arrNew.splice(n, 1) continue; } //第二个for循环,用来让元素与其后面的元素进行比较 for (var j = k + 1; j < arr.length; j++) { //设置一个bool值,用来判断是否要将元素插入arrNew数组中去 var bool = true; //第三个for循环,用来判断两个元素的字符是否相同 for (var i = 0; i < arr[i].length; i++) { //判断两个元素的字符是否相等,如果不相等,就把bool改为false if (!isInArray(arr[k], arr[j][i])) { bool = false; break; } } //如果bool是true,就将a[j]放入arrNew数组中去 if (bool) { arrNew[n].push(arr[j]) } } n++ } //自定义一个方法,用来判断两个元素的字符是否相同 function isInArray(arr, value) { var index = arr.indexOf(value); if (index != -1) { return true; } else { return false; } }