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

การสร้างและจับคู่สตริงจากอาร์เรย์ตามสตริงสุ่มใน JavaScript

สมมติว่าเรามีอาร์เรย์ของสตริงที่มีชื่อบางอย่าง เช่น:

const arr = ['Dinesh', 'Mahesh', 'Rohit', 'Kamal', 'Jatin Sapru', 'Jai'];

และสตริงตัวอักษรสุ่ม เช่น:

const str = 'lsoaakjm';

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

ถ้าเงื่อนไขนี้ตรงกับสมาชิกใดในอาร์เรย์ ให้คืนค่าสมาชิกนั้น มิฉะนั้นคืนค่าสตริงว่าง

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

const arr = ['Dinesh', 'Mahesh', 'Rohit', 'Kamal', 'Jatin Sapru', 'Jai'];
const str = 'lsoaakjm';
const initialise = (str = '', map) => {
  for(let i = 0; i < str.length; i++) {
    map[str[i]] = (map[str[i]] || 0) + 1;
  }
};
const deleteAll = map => {
  for(key in map) {
    delete map[key];
  }
};
const checkForFormation = (arr = [], str = '') => {
  const map = {};
  for(let i = 0; i < arr.length; i++) {
    const el = arr[i].toLowerCase();
    initialise(str, map);
    let j;
    for(j = 0; j < el.length; j++) {
      const char = el[j];
      if(!map[char]) {
        break;
      } else {
        map[char]--;
      }
    }
    if(j === el.length) {
      return arr[i];
    }
    deleteAll(map);
  }
  return '';
};
console.log(checkForFormation(arr, str));

ผลลัพธ์

Kamal