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