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

如何在jQuery的each()函数中使用变量作为对象属性键?

解决动态访问对象属性的问题

嘿,我完全懂你的困扰——刚接触的时候很容易在对象属性访问这里卡壳,其实这是JavaScript的基础知识点,跟jQuery关系不大哦!

问题出在哪?

你写的v.thekey并不是在使用thekey变量里的属性名,而是在直接访问对象v中名为thekey的属性(注意是字面量的字符串"thekey",不是你传入的参数值)。而v.wid能正常工作,是因为它直接指定了属性名为wid,是固定的字面量。

正确的写法:方括号语法

要动态使用变量作为属性名,你得用方括号语法,也就是v[thekey],而不是点语法。点语法只能用固定的属性名,方括号语法才支持变量、表达式这类动态的属性名。

修改后的完整函数

把你的函数里的v.thekey改成v[thekey],另外你里面硬编码的tkey = 'wid'其实没必要,直接用传入的thekey参数就行:

function countmeta(array, thekey, item) {
  var count = 0;
  $.each(array, function(i, v) {
    // 用方括号访问动态属性
    if (v[thekey] == item) {
      count++;
    }
  });
  return count;
}

两种属性访问方式的区别

  • 点语法(v.wid):属性名必须是固定的字符串,而且得符合标识符规则(比如不能有空格、不能以数字开头)
  • 方括号语法(v[thekey]):可以用变量、字符串甚至表达式来指定属性名,完美适配你这种需要动态传属性名的场景

举个调用例子:如果你的数组里有多个带wid属性的对象,想统计wid等于100的数量,直接这样调用就行:

var result = countmeta(yourArray, 'wid', 100);

另外,如果你之前想用tkey变量的话,比如var tkey = thekey;,那也要写成v[tkey],而不是v.tkey,这样就能正常工作啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:41:27