Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การสร้างทุกความเป็นไปได้ของคำที่ให้มาใน JavaScript


ภาพรวม

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ของสตริง และสร้างคืนค่าความเป็นไปได้ทั้งหมดของการจัดเรียงสตริงเหล่านั้น (Permutations)

ตัวอย่างโค้ด

const arr = ['a', 'b', 'c', 'd'];

const permutations = (len, val, existing) => {
  if(len === 0) {
    res.push(val);
    return;
  }
  for(let i = 0; i < arr.length; i++) {
    if(!existing[i]) {
      existing[i] = true;
      permutations(len - 1, val + arr[i], existing);
      existing[i] = false;
    }
  }
};

let res = [];
const buildPermuations = (arr = []) => {
  for(let i = 0; i < arr.length; i++) {
    permutations(arr.length - i, "", []);
  }
};

buildPermuations(arr);
console.log(res);

ผลลัพธ์ในคอนโซล

[
  'abcd', 'abdc', 'acbd', 'acdb', 'adbc', 'adcb',
  'bacd', 'badc', 'bcad', 'bcda', 'bdac', 'bdca',
  'cabd', 'cadb', 'cbad', 'cbda', 'cdab', 'cdba',
  'dabc', 'dacb', 'dbac', 'dbca', 'dcab', 'dcba',
  'abc', 'abd', 'acb', 'acd', 'adb', 'adc',
  'bac', 'bad', 'bca', 'bcd', 'bda', 'bdc',
  'cab', 'cad', 'cba', 'cbd', 'cda', 'cdb',
  'dab', 'dac', 'dba', 'dbc', 'dca', 'dcb',
  'ab', 'ac', 'ad', 'ba', 'bc', 'bd',
  'ca', 'cb', 'cd', 'da', 'db', 'dc',
  'a', 'b', 'c', 'd'
]