0

0

JavaScript 中动态获取嵌套对象内所有数组长度的完整方法

心靈之曲

心靈之曲

发布时间:2026-02-25 16:52:15

|

445人浏览过

|

来源于php中文网

原创

JavaScript 中动态获取嵌套对象内所有数组长度的完整方法

本文介绍如何在键名未知且动态变化的情况下,准确获取嵌套 json 对象中所有数组属性的长度,适用于配置驱动、api 响应结构不固定等真实开发场景。

本文介绍如何在键名未知且动态变化的情况下,准确获取嵌套 json 对象中所有数组属性的长度,适用于配置驱动、api 响应结构不固定等真实开发场景。

在 JavaScript 中,当处理类似字典(即普通对象)结构的数据时,若顶层或中间层的键名是动态生成的(如 "F1.1"),而我们需要统一获取其内部所有数组字段(如 add、delete)的长度,就不能依赖硬编码的属性访问。核心思路是:先通过 Object.keys() 或 Object.entries() 动态枚举属性,再结合类型判断与 .length 安全读取

以下是一个健壮、可复用的实现方案:

const data = {
    "F1.1": {
        "add": [
            { "id": 169138, "name": "volkswagen" },
            { "id": 173212, "name": "skoda" }
        ],
        "delete": [
            { "id": 175555, "name": "mercedes" }
        ]
    }
};

// ✅ 安全获取第一个(或任意)动态子对象,并遍历其所有数组属性
const firstKey = Object.keys(data)[0]; // 动态获取顶层键,如 "F1.1"
if (firstKey && data[firstKey] && typeof data[firstKey] === 'object') {
    const targetObj = data[firstKey];

    Object.entries(targetObj).forEach(([key, value]) => {
        // 仅对数组类型计算长度,避免对 null/undefined/非数组报错
        if (Array.isArray(value)) {
            console.log(`Length of "${key}": ${value.length}`);
        } else {
            console.warn(`"${key}" is not an array — skipped`);
        }
    });
}
// 输出:
// Length of "add": 2
// Length of "delete": 1

? 关键要点与注意事项

知元AI
知元AI

AI智能语音聊天 对讲问答 AI绘画 AI写作 AI创作助手工具

下载
  • Object.keys(obj) 返回字符串数组,适用于获取所有可枚举自有属性名;若需同时获取值,推荐 Object.entries()(返回 [key, value] 元组),语义更清晰;
  • 务必添加类型校验(Array.isArray(value)),防止因字段缺失、值为 null 或非数组类型(如对象、字符串)导致 .length 报错或返回意外结果(例如 "abc".length === 3);
  • 若存在多级动态键(如顶层键、子键均不确定),可封装为递归函数,但需明确终止条件(如只扫描指定深度,或仅在特定层级提取数组);
  • 在 TypeScript 项目中,建议为数据结构定义接口(如 interface OperationGroup { add: Item[]; delete: Item[]; }),配合类型守卫进一步提升安全性。

✅ 总结:面对动态键名的嵌套对象,“枚举 + 类型判断 + 安全访问” 是获取数组长度的黄金组合。它不依赖硬编码键名,具备良好的扩展性与鲁棒性,是现代前端数据处理中的基础实践模式。

立即学习Java免费学习笔记(深入)”;

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

40

2026.02.13

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

13

2026.02.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

448

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

323

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

246

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

886

2024.03.01

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

65

2026.02.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 5.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.1万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号