可以从源数组JavaScript形成目标数组

我们给了一个由不同的整数组成的数组,比如说arr,还有另一个由整数数组组成的数组,比如说sourceArr。

在sourceArr数组中,整数是不同的。我们应该编写一个通过以任意顺序连接sourceArr中的数组来形成arr的函数。

但是,我们无法在soureArr中的任何子数组内对整数进行重新排序。如果可以从sourceArr形成数组arr,则应该返回true,否则返回false。

例如-

const arr = [23, 67, 789];

const sourceArr = [[23], [789, 67]];

该函数应返回false,因为我们无法对子数组中的元素进行重新排序,否则我们将无法实现目标arr。

示例

const arr1 = [23, 67, 789];

const arr2 = [23, 789, 67];

const sourceArr = [[23], [789, 67]];

const validFormation = (arr, sourceArr) => {

   const indexes = new Array(100);

   let arrIndex = 0;

   let index;

   for (let i = 0; i < sourceArr.length; ++i) {

      indexes[sourceArr[i][0]] = i;

   }

   while (arrIndex < arr.length) {

      index = indexes[arr[arrIndex]];

      if (index === undefined) return false;

      for (let j = 0; j < sourceArr[index].length; ++j) {

         if (arr[arrIndex] !== sourceArr[index][j]) return false;

            ++arrIndex;

      }

   }

   return true;

};

console.log(validFormation(arr1, sourceArr));

console.log(validFormation(arr2, sourceArr));

输出结果

这将产生以下输出-

false

true

以上是 可以从源数组JavaScript形成目标数组 的全部内容, 来源链接: utcz.com/z/345290.html

回到顶部