如何将表单值传入二维关联数组?getSalary函数故障求助
解决二维关联数组与getSalary函数的问题
看起来你在处理二维关联数组和薪资计算函数时卡壳了,我来帮你捋一捋~
核心问题分析
你当前定义的salaries是嵌套数组结构,但数组是索引驱动的,而你需要的是键值对关联的逻辑——这也是getSalary()无法正常工作的关键:你没法直接通过职位名称(比如"intern")快速定位到对应的薪资,必须依赖索引取值,不仅容易出错,代码可读性也差。
修改方案:改用对象嵌套的关联结构
在JavaScript中,用对象嵌套来实现“二维关联数组”是最直观且高效的方式,我帮你调整了salaries的结构:
// 键为岗位类型(如mrWh/mrbchWht),值为职位-薪资的键值对 const salaries = { "mrWh": { "intern": 2511, "contractual": 2592, "designated": 2932, "certificated": 3411 }, "mrbchWht": { "intern": 2121, "contractual": 2200, "designated": 2500 // 补全你未写完的数值 // 可继续添加其他职位的薪资 } };
表单值传递与getSalary()实现
假设你的表单包含两个核心输入项:选择岗位类型的控件(如name="jobType")、选择职位级别的控件(如name="position"),可以这样获取表单值并调用getSalary():
1. 获取表单值的函数
function getFormValues() { // 从表单中提取两个关键参数 const jobType = document.querySelector('[name="jobType"]').value; const position = document.querySelector('[name="position"]').value; // 调用薪资计算函数并输出结果 const result = getSalary(jobType, position); alert(`对应薪资:${result}`); }
2. 修正后的getSalary()函数
function getSalary(jobType, position) { // 先校验参数是否有效,避免报错 if (salaries[jobType] && salaries[jobType][position]) { return salaries[jobType][position]; } else { // 处理无效输入的情况 return "无效的岗位类型或职位级别"; } }
补充说明
如果你坚持要使用数组结构实现关联逻辑,也可以将子数组改为Map类型,但对象的写法在日常开发中是最常用、最易维护的方案。
内容的提问来源于stack exchange,提问作者chudyy
相关产品推荐
相关产品推荐

