Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

สามารถสร้างอาร์เรย์เป้าหมายจากซอร์สอาร์เรย์ JavaScript


เราได้รับอาร์เรย์ของจำนวนเต็มที่แตกต่างกัน สมมติว่า arr และอาร์เรย์ของอาร์เรย์จำนวนเต็มอื่น เช่น sourceArr

ในอาร์เรย์ sourceArr จำนวนเต็มจะแตกต่างกัน เราควรเขียนฟังก์ชันที่สร้าง arr โดยการต่ออาร์เรย์ใน sourceArr ในลำดับใดก็ได้

อย่างไรก็ตาม เราไม่สามารถเรียงลำดับจำนวนเต็มภายในอาร์เรย์ย่อยใดๆ ใน soureArr ได้ เราควรคืนค่า จริง หากเป็นไปได้ที่จะสร้างอาร์เรย์ arr จาก sourceArr มิฉะนั้น จะเป็นเท็จ

ตัวอย่างเช่น −

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

ฟังก์ชันควรคืนค่า false เนื่องจากเราไม่สามารถจัดลำดับองค์ประกอบภายใน subarray ใหม่ได้ และเราจะไม่สามารถบรรลุ 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