讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 JavaScript 中优雅地按属性值过滤 JSON 数组

千晨同学_1787

千晨同学_1787

发布时间:2026-01-08 16:34:01

|

248人浏览过

|

来源于php中文网

原创

如何在 JavaScript 中优雅地按属性值过滤 JSON 数组

本文介绍如何像 jquery 选择 xml 节点一样简洁高效地过滤 json 数组,利用原生 `array.prototype.filter()` 和动态属性访问(`obj[key]`)实现与 `'creature > desert:contains("true")'` 等效的语义化筛选。

从 XML 迁移到 JSON 后,开发者常怀念 jQuery 提供的链式、类 CSS 选择器式的过滤能力(如 $('Creature > Desert:contains("true")').parent())。但 JSON 作为纯数据结构,不支持 DOM 查询语法——这并非缺陷,而是契机:我们可借助现代 JavaScript 的函数式方法,写出更清晰、更可控、无需依赖库的等效逻辑。

核心思路非常直接:将用户选中的地形字段名(如 "Desert")作为动态键,遍历数组,检查对应属性是否为 true。使用 filter() 配合方括号属性访问即可优雅实现:

const creatures = [
  { "Name": "Someone", "Desert": false, "Woods": false, "Mountains": false, "Swamp": false },
  { "Name": "Sandy",   "Desert": true,  "Woods": false, "Mountains": false, "Swamp": false },
  { "Name": "Bogart",  "Desert": false, "Woods": false, "Mountains": false, "Swamp": true }
];

const selectedTerrain = "Swamp"; // 来自 radio 按钮的 value 值

const filteredCreatures = creatures.filter(creature => creature[selectedTerrain] === true);
// → [{ "Name": "Bogart", "Desert": false, ..., "Swamp": true }]

✅ 优势说明:

java-api-doc-generator
java-api-doc-generator

分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。

下载
  • 语义等价:creature[selectedTerrain] === true 完全对应 XML 中 true 的判定逻辑;
  • 类型安全:显式使用 === true 可避免 falsy 值(如 0, "", null)误匹配,比仅写 creature[selectedTerrain] 更严谨;
  • 零依赖:不依赖 jQuery 或任何第三方库,兼容所有现代浏览器及 Node.js 环境;
  • 可扩展性强:轻松组合多条件(如 filter(c => c.Desert && c.Woods))或支持模糊匹配(c.Name.includes(keyword))。

⚠️ 注意事项:

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

  • 确保 selectedTerrain 是合法属性名且存在于每个对象中,否则 creature[selectedTerrain] 返回 undefined,比较结果为 false(安全,但需考虑默认行为);
  • 若后端可能返回字符串 "true"/"false",请先做类型归一化:Boolean(JSON.parse(creature[selectedTerrain])) 或 creature[selectedTerrain] === "true";
  • 对于大型数组(>10k 项),可结合 find() 替代 filter() 获取首个匹配项以提升性能。

总结:JSON 过滤无需“模拟 XML 语法”,而应拥抱其数据本质——用 filter() + 动态键访问,代码更短、逻辑更明、维护性更高。一次迁移,两次进化。

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
json数据格式
json数据格式

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

2215

2023.08.07

json是什么
json是什么

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

3502

2023.08.23

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

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

1176

2023.10.13

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

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

4019

2025.09.10

jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

601

2023.09.12

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

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

1176

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2262

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

2168

2023.12.04

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

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

精品课程

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

共14课时 | 1.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.3万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn