You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过函数获取指定对象键?表单多语言验证消息参数异常

嘿,我来帮你搞定这两个问题!

问题1:如何通过函数获取对象的指定键?

要获取对象的指定键,核心要看你是用固定的键名还是变量形式的键名,两种场景对应不同的写法:

  • 如果键名是明确的固定值,用点符号(.)就可以,比如 user.name;
  • 如果键名是变量(比如函数参数传入的),必须用方括号符号([])——这是点符号替代不了的,也是新手容易踩坑的点。

给你写个简单的函数示例:

function getObjectKey(obj, key) {
  // 这里必须用方括号,因为key是变量
  return obj[key];
}

// 使用例子
const product = { id: 101, name: "无线耳机" };
console.log(getObjectKey(product, "id")); // 输出 101
console.log(getObjectKey(product, "name")); // 输出 "无线耳机"

要是误用点符号obj.key,JS会把key当成一个字面量的键名去查找,而不是用变量key的实际值,自然拿不到你想要的结果。

问题2:表单验证多语言错误消息的target参数问题

你遇到的问题刚好就是上面说的点符号和方括号的区别!

你的代码里return messages.de.target失效,是因为JS把target当成了字符串字面量,去messages.de里找名为"target"的键,而不是用你传入的target参数的值。

只需要把点符号改成方括号就能解决:

function formMessages(field, target) {
  var messages = {
    'de' : {
      'valueMissing': 'Bitte füllen Sie dieses Feld aus.',
      'typeMismatch': {
        'email': 'Bitte geben Sie eine E-Mail ein.',
        'url': 'Bitte geben Sie eine URL ein.'
      }
    }
  };
  // 用方括号访问变量target,就能正确解析参数值了
  return messages.de[target];
}

比如你传入target = "valueMissing"时,messages.de[target]就等价于messages.de.valueMissing;如果传入target = "typeMismatch",就会返回对应的嵌套对象,完全符合你的需求。

要是之后需要访问typeMismatch下的子键(比如email),可以再加个参数(比如subTarget),用messages.de[target][subTarget]就能拿到对应的值啦~


内容的提问来源于stack exchange,提问作者QJan84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:20:25