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

JavaScript中获取数组对象内value数组长度的问题排查

问题分析与解决

你的代码中value返回undefined是因为两个核心错误:

  • 用for...in遍历数组时,循环变量key是数组的索引(如0、1),并非目标对象里的key属性,导致生成的结果中key值不符合预期。
  • message[key]是数组中的单个对象,对象本身没有length属性,你需要访问对象的value属性(这才是存储数据的数组),再获取它的length。

修正方案1:使用map方法(推荐)

map方法可以直接遍历数组并转换元素,一步得到目标结果:

var message = [
  {
    "key": "a5a5E0000003uzTQAQ",
    "value": [{"Name": "Features1"}]
  },
  {
    "key": "a5a5E0000003uzYQAQ",
    "value": [
      {"Name": "AEO Analysis - Engagement"},
      {"Name": "AEO Analysis - Engagement 1"}
    ]
  }
]

const noOfFields = message.map(item => ({
  key: item.key,
  value: item.value.length
}))

console.log(noOfFields)

修正方案2:使用forEach循环(贴近你的原始思路)

如果更习惯手动收集结果,可以用forEach遍历数组元素:

var message = [
  {
    "key": "a5a5E0000003uzTQAQ",
    "value": [{"Name": "Features1"}]
  },
  {
    "key": "a5a5E0000003uzYQAQ",
    "value": [
      {"Name": "AEO Analysis - Engagement"},
      {"Name": "AEO Analysis - Engagement 1"}
    ]
  }
]

let noOfFields = []
message.forEach(item => {
  noOfFields.push({
    key: item.key,
    value: item.value.length
  })
})

console.log(noOfFields)

补充说明

for...in主要用于遍历对象的可枚举属性,虽然能遍历数组,但会拿到索引字符串,还可能意外遍历到数组原型链上的自定义属性,因此遍历数组优先使用forEach、map、for...of这类更安全的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:27:39