技术需求:将星期以名称而非数字显示并修正加纳姓名计算JS函数
修正后的加纳传统姓名计算函数(含星期名称显示)
我看了你的代码,发现几个小问题需要调整,同时帮你实现以星期名称而非数字显示的需求。这里是修正后的完整代码:
function compute(event) { event.preventDefault(); const form = new FormData(event.target); // 获取表单输入的出生日期和性别 const day = form.get("day"); const month = form.get("month"); const year = form.get("year"); const gender = form.get("gender"); // 加纳传统姓名与星期、性别的映射表 const ghanaNameMap = { Sunday: { male: 'Kwasi', female: 'Akosua' }, Monday: { male: 'Kwadwo', female: 'Adwoa' }, Tuesday: { male: 'Kwabena', female: 'Abenaa' }, Wednesday: { male: 'Kwaku', female: 'Akua' }, Thursday: { male: 'Yaw', female: 'Yaa' }, Friday: { male: 'Kofi', female: 'Afua' }, Saturday: { male: 'Kwame', female: 'Ama' } }; // 构造合法日期字符串并生成Date对象 const dateStr = `${year}/${month}/${day}`; const birthDate = new Date(dateStr); // 将星期数字转换为星期名称(getDay()返回0-6,对应周日到周六) const dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; const dayOfWeekName = dayNames[birthDate.getDay()]; // 获取对应的加纳传统姓名 const ghanaName = ghanaNameMap[dayOfWeekName][gender]; // 输出结果(可替换为页面展示逻辑) console.log(`你出生在${dayOfWeekName},对应的加纳姓名是${ghanaName}`); // 示例:如果页面有id为result的元素,可将结果显示在页面上 // document.getElementById('result').textContent = `出生星期:${dayOfWeekName},加纳姓名:${ghanaName}`; }
关键调整说明:
- 修复变量问题:原代码里重复声明了
day变量,我调整了命名(比如birthDate、dayNames)避免变量覆盖,同时补全了未定义的dateString变量。 - 实现星期名称显示:通过
dayNames数组,把getDay()返回的数字(0=周日,6=周六)直接映射成对应的星期名称,既可以用来匹配姓名,也能直接展示给用户。 - 代码可读性优化:用
const替代var符合现代JS规范,给变量起了更清晰的名字(比如ghanaNameMap),让逻辑更易懂。
现在这个函数既能正确计算加纳传统姓名,也能直接获取并显示出生当天的星期名称,你可以根据需求把结果输出到控制台或者页面的指定元素中。
内容的提问来源于stack exchange,提问作者Abzed Ibra
相关产品推荐
相关产品推荐

