Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra xem chuỗi có phải là sự kết hợp của các chuỗi trong một mảng hay không bằng cách sử dụng JavaScript


Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng chuỗi làm đối số đầu tiên và một chuỗi làm đối số thứ hai.

Hàm nên kiểm tra xem chuỗi được chỉ định bởi đối số thứ hai có thể được hình thành bằng cách kết hợp các chuỗi của mảng theo bất kỳ cách nào có thể hay không.

Ví dụ - Nếu mảng đầu vào là -

const arr = ["for","car","keys","forth"];

Và chuỗi là -

const str = "forthcarkeys";

Khi đó, kết quả đầu ra phải là true, vì chuỗi là sự kết hợp của các phần tử ở chỉ số 3, 1 và 2 của mảng.

Ví dụ

Mã cho điều này sẽ là -

const arr = ["for","car","keys","forth"];
const str = "forthcarkeys";
const checkPossibility = (str = '', arr = []) => {
   let possibilities = arr.reduce(function (r, a) {
      let p = str.indexOf(a);
      while (p !== −1) {
         r.push({ word: a, position: p });
         p = str.indexOf(a, p + 1);
      }
      return r;
   }, []);
   const findRecursively = (i, t) => {
      let s = t.slice(), j;
      if (i === possibilities.length) {
         return !t.join('');
      }
      if (possibilities[i].word.split('').every(function (c, j) {
         return
         s[j + possibilities[i].position] !== ''; })) {
         for (j = 0; j < possibilities[i].word.length; j++) {
            s[j + possibilities[i].position] = '';
         }
      }
      return findRecursively(i + 1, s) || findRecursively(i + 1, t);
   }
   return findRecursively(0, str.split(''));
};
console.log(checkPossibility(str, arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

true