一个数组, 如['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;
    }

  }

猜你喜欢

转载自www.cnblogs.com/luckq/p/9485431.html