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

หาตัวเลขที่ถูกกดเพื่อได้คำ (ตรงข้ามปัญหาเบอร์โทรศัพท์) ใน JavaScript


การแมปตัวเลขไปยังตัวอักษรในโทรศัพท์แบบปุ่มเก่าเป็นดังนี้

const mapping = { 
  1: [], 
  2: ['a', 'b', 'c'], 
  3: ['d', 'e', 'f'], 
  4: ['g', 'h', 'i'], 
  5: ['j', 'k', 'l'], 
  6: ['m', 'n', 'o'], 
  7: ['p', 'q', 'r', 's'], 
  8: ['t', 'u', 'v'], 
  9: ['w', 'x', 'y', 'z'] 
};

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงตัวอักษรและคืนค่าการจัดเรียงตัวเลขที่กดเพื่อพิมพ์สตริงนั้น

ตัวอย่างเช่น

ถ้าสตริงตัวอักษรคือ

const str = 'mad';

ตัวเลขเอาต์พุทควรเป็น

const output = [6, 2, 3];

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

โค้ดสำหรับการทำงานนี้จะเป็นดังนี้

const mapping = { 
  1: [], 
  2: ['a', 'b', 'c'], 
  3: ['d', 'e', 'f'], 
  4: ['g', 'h', 'i'], 
  5: ['j', 'k', 'l'], 
  6: ['m', 'n', 'o'], 
  7: ['p', 'q', 'acc', 's'], 
  8: ['t', 'u', 'v'], 
  9: ['w', 'x', 'y', 'z'] 
}; 
const convertToNumeral = (str = '') => { 
  const entries = Object.entries(mapping); 
  const res = entries.reduce((acc, [v, letters]) => { 
    letters.forEach(l => acc[l] = +v); 
    return acc; 
  }, {}); 
  const result = Array.from(str, (el) => { 
    return res[el]; 
  }); 
  return result; 
}; 
console.log(convertToNumeral('mad'))

ผลลัพธ์

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

[ 6, 2, 3 ]