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

อัลกอริทึมเพื่อได้คอมบิเนชันของทุกสมาชิกในอาร์เรย์ใน JavaScript

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

เช่น ถ้าอาร์เรย์อินพุตคือ:

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

ผลลัพธ์ควรเป็น:

const output = ["a", "ab", "abc", "abcd", "abd", "ac", "acd", "ad", "b", "bc", "bcd", "bd", "c", "cd", "d"];

ตัวอย่าง

const getCombinations = (arr = []) => {
  const combine = (sub, ind) => {
    let result = []
    let i, l, p;
    for (i = ind, l = arr.length; i < l; i++) {
      p = sub.slice(0);
      p.push(arr[i]);
      result = result.concat(combine(p, i + 1));
      result.push(p.join(''));
    };
    return result;
  }
  return combine([], 0);
};
console.log(getCombinations(["a", "b", "c", "d"]));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

[
  'abcd', 'abc', 'abd',
  'ab', 'acd', 'ac',
  'ad', 'a', 'bcd',
  'bc', 'bd', 'b',
  'cd', 'c', 'd'
]