สมมติว่าเรามีอาร์เรย์ของสตริงที่มีชื่อบางอย่าง เช่น:
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