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

如何获取JavaScript对象中键名的长度而非键值长度?

获取JavaScript对象键名的长度及筛选方法

首先先把你的示例对象修正为标准的JavaScript对象格式,方便后续演示:

const userData = {
  Johnny: 7,
  William: 235,
  Betty: 16
};

一、获取单个键名的长度

如果你想直接获取某个特定键名(比如Betty)的长度,不需要绕弯子,直接用键名字符串的length属性就行:

// 直接指定键名
console.log('Betty'.length); // 输出 5

// 如果是动态获取键名,先拿到键名再取长度
const targetKey = 'Betty';
console.log(targetKey.length); // 同样输出 5

如果是不确定键名,需要从对象中匹配获取,也可以用Object.keys()先拿到所有键名数组再查找:

const targetKey = Object.keys(userData).find(key => key === 'Betty');
console.log(targetKey.length); // 输出 5

二、筛选键名长度为7的条目

你提到要遍历对象并筛选键名长度为7的条目,这里有两种常用方法,各有优势:

方法1:使用for...in循环

这是你计划用的方式,需要注意加上hasOwnProperty判断(避免遍历到原型链上的继承属性),然后在循环里判断键名长度:

for (const key in userData) {
  // 确保只处理对象自身的属性
  if (userData.hasOwnProperty(key)) {
    if (key.length === 7) {
      console.log(`符合条件的条目:${key} -> ${userData[key]}`);
      // 这里会输出 "符合条件的条目:William -> 235"
    }
  }
}

方法2:转换为数组后筛选(更简洁)

利用ES6的Object.entries()或Object.keys()方法,把对象转换成数组后,用数组的filter方法筛选,代码会更简洁易读:

// 方式A:获取符合条件的键值对数组
const filteredEntries = Object.entries(userData).filter(([key]) => key.length === 7);
// 输出结果:[["William", 235]]

// 遍历输出筛选后的内容
filteredEntries.forEach(([key, value]) => {
  console.log(`${key}: ${value}`);
});

// 方式B:只获取符合条件的键名
const filteredKeys = Object.keys(userData).filter(key => key.length === 7);
// 输出结果:["William"]

哪种方法更简便?

如果你的需求只是简单筛选并处理,转换为数组的方式更简便——数组的filter、forEach等方法让代码逻辑更清晰,不需要手动写循环里的条件判断,也不用担心原型链属性的问题(因为Object.keys/entries只会返回对象自身的可枚举属性)。

当然for...in也完全可行,适合习惯传统循环写法的场景,或者需要在循环里做更复杂逻辑的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:33:18