如何在 JavaScript 中过滤嵌套对象?

概述

在 JavaScript 中,嵌套对象是一个简单的对象,它被括在大括号中,要使嵌套对象成为一个对象,就必须继承它自己的对象。因此,为了在 JavaScript 中过滤对象,JavaScript 提供了名为 "filter() "的方法,该 filter() 方法的参数是一个回调函数,其中返回了一个条件,在该条件下给定的数组对象将被过滤。因此,为了完成过滤任务,我们必须创建一个简单的对象,就像在其他编程语言中创建对象一样,然后继承对象中的一些键值作为嵌套值,这样就形成了一个嵌套对象。

语法

使用 filter() 方法的基本语法如下所示。在给定的语法中,"objectName "将被替换为您要创建的对象的名称,并根据您要过滤给定嵌套对象的条件返回过滤器的条件。

objectName.filter(function(){return condition;
});

算法

  • 第 1 步 - 在文本编辑器中创建一个 HTML 文件,文件名为 “index.html”,在索引文件中添加 HTML 模板。
  • 第 2 步 - 现在在 body 标签中创建一个父 div 容器,id 名称为 “Output”。
<div id="Output"> </div>
  • 第 3 步 - 在正文的结尾标签前添加脚本标签。
<script></script>
  • 第 4 步 - 创建一个空数组变量。
var myObj = [];
  • 第 5 步 - 现在将对象数据添加到上述用嵌套对象创建的变量中。
var myObj = [{product_id: 1,product_name: " product1 ",product_price:{MRP_Price:50000,Discount_Price:48000},product_description: "Product description for product 1. Do not take this description for the above product."},{product_id: 2,product_name: " product2 ",product_price:{MRP_Price:40000,Discount_Price:38000},product_description: "Product description for product 2. Do not take this description for the above product."},{product_id: 3,product_name: " product3 ",product_price:{MRP_Price:60000,Discount_Price:58000},product_description: "Product description for product 3. Do not take this description for the above product."},{product_id: 4,product_name: " product4 ",product_price:{MRP_Price:52000,Discount_Price:50000},product_description: "Product description for product 4. Do not take this description for the above product."}
];
  • 第 6 步 - 现在使用 filter 方法过滤嵌套对象,并将其存储到一个变量中。
var filteredObj = myObj.filter(function (item) {
});
  • 第 7 步 - 返回需要过滤数据的条件。
var filteredObj = myObj.filter(function (item) {return item.product_price.Discount_Price >= 50000;
});
  • 第 8 步 - 现在,过滤后的数据以对象的形式存在变量中。
  • 第 9 步 - 使用 HTML 表格,以表格形式显示过滤后的数据。
var productTable = "";
filteredObj.forEach(function (item) {productTable += `<table border="2" align="center" style="margin:1rem 0; text-align:center;"><tr><th>Id</th><th>Name</th><th>MRP Price</th><th>Discounted Price</th><th>Description</th></tr><tr><td>`+ item.product_id + `</td><td>`+ item.product_name + `</td><td>`+ item.product_price.MRP_Price + `</td><td>`+ item.product_price.Discount_Price + `</td><td>`+ item.product_description + `</td></tr></table>`
});
document.getElementById("Output").innerHTML = productTable;
  • 第 10 步 - 过滤后的数据将显示在浏览器中。

示例

在本例中,我们将创建一个嵌套对象数据,包括产品 ID、名称、价格、嵌套的 mrp 价格和折扣价格以及产品描述。因此,在本示例中,我们的主要任务是使用 filter() 方法过滤数据,我们将在 filter 方法的返回值中设置过滤对象的条件,过滤数据后,我们将以表格形式显示数据,这样用户就可以很容易地从嵌套对象数据中分析过滤后的数据。

<html>
<head><title> filter nested objects </title>
</head>
<body><h3> Filtered nested objects using filter() method </h3><div id="Output"> </div><script>var myObj = [{product_id: 1,product_name: "product1",product_price:{MRP_Price:50000,Discount_Price:48000},product_description: "Product description for the product. Do not take this description for the above product."},{product_id: 2,product_name: "product2",product_price:{MRP_Price:40000,Discount_Price:38000},product_description: "Product description for the product. Do not take this description for the above product."},{product_id: 3,product_name: "product3",product_price:{MRP_Price:60000,Discount_Price:58000},product_description: "Product description for the product. Do not take this description for the above product."},{product_id: 4,product_name: "product4",product_price:{MRP_Price:52000,Discount_Price:50000},product_description: "Product description for the product. Do not take this description for the above product."}];var filteredObj = myObj.filter(function (item) {return item.product_price.Discount_Price >= 50000;});var productTable = "";filteredObj.forEach(function (item) {productTable += `<table border="2" align="center" style="margin:1rem 0; text-align:center;"><tr><th>Id</th><th>Name</th><th>MRP Price</th><th>Discounted Price</th><th>Description</th></tr><tr><td>`+ item.product_id + `</td><td>`+ item.product_name + `</td><td>`+ item.product_price.MRP_Price + `</td><td>`+ item.product_price.Discount_Price + `</td><td>`+ item.product_description + `</td></tr></table>`});document.getElementById("Output").innerHTML = productTable;</script>
</body>
</html>

下图显示了上述示例的输出结果,当我们加载上述示例时,对象列表也将被加载并存储在变量 "myObj "中。由于我们在价格键值中提取了 "MRP_Price’'"和 "Discount_Price "这两个价格,因此在过滤器返回值中,我们设置的条件是只过滤折扣价大于等于(>=)50000 的数据。因此,该对象将只过滤产品 3 和产品 4,因为它们的折扣价大于 50000。这些数据将以表格形式显示。

结论

在上面的示例中,我们以表格的形式显示了过滤后的数据,我们也可以通过在控制台中显示数据而不使用表格。但在将数据显示到控制台之前,应将数据转换为字符串,因为数据是对象形式的。我们可以使用 (JSON.stringify(filteredObjName))将数据对象转换为字符串,这是针对 JSON 等对象的字符串化方法。这种过滤对象的方法可用于联系人、电子商务等应用中。电子商务使用筛选器根据评级和价格对产品进行排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/290387.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter结构体系及运行原理顺序解析

一、Jmeter 运行原理&#xff1a; Jmeter 时以线程的方式来运行的&#xff08;由于Jmeter 是 java 开发的所以是运行在 JVM 虚拟机上的&#xff0c;java 也是支持多线程的&#xff09; 二、Jmeter 结构体系 1.线程组 性能测试需要模拟大量用户负载的情况&#xff0c;线程组…

APP应用加固指南:如何有效辨别,网络上伪造的地理位置?

目录 地理位置数据的来源 伪造地理位置数据的危害 如何有效辨别模拟器作弊行为&#xff1f; App加固有效防控地理伪造 在数字互联时代&#xff0c;已经离不开地理位置数据。地理位置数据不仅仅是一个简单的坐标&#xff0c;更是一种数字足迹&#xff0c;描绘了人们在数字世界中…

prometheus相关概念

prometheus相关概念 在安装好Prometheus后,会暴露一个/metrics的http服务(相当于安装了prometheus_exporter),通过配置,Prometheus就可以采集到这个/metrics下的所有监控样本数据. 样本 Prometheus会将所有采集到的监控样本数据以时间序列的方式保存在内存数据库中,并且定时保…

MySQL数据库 约束

目录 约束概述 外键约束 添加外键 删除外键 删除/更新行为 约束概述 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 分类: 注意&#xff1a;约束是作用于表中字段上…

2023 英特尔On技术创新大会直播 | 边云协同加速 AI 解决方案商业化落地

目录 前言边云协同时代背景边缘人工智能边缘挑战英特尔边云协同的创新成果最后 前言 最近观看了英特尔On技术创新大会直播&#xff0c;学到了挺多知识&#xff0c;其中对英特尔高级首席 AI 工程张宇博士讲解的边云协同加速 AI 解决方案商业化落地特别感兴趣。张宇博士讲解了英…

深度学习中常见的激活函数

前文介绍 我们在前面了解到了线性回归模型&#xff0c;其实我们可以把线性回归看成一个单个的神经元&#xff0c;它实际上就完成了两个步骤 1.对输入的特征的加权求和 2.将结果通过传递函数&#xff08;或者激活函数&#xff09;输出 这里我们提到了传递函数&#xff08;或者…

一篇文章带你了解SpringBoot目录结构

前言 SpringBoot是整合Spring技术栈的一站式框架&#xff0c;是简化Spring技术栈的快速开发脚手架&#xff0c;是一个能够快速构建生产级别的Spring应用的工具。SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;简化Spring项目搭建及开发过程。…

【lesson20】MySQL复合查询(1)基本查询回顾、多表查询和自连接

文章目录 基本查询回顾建表插入数据实例 多表查询建表插入数据实例 自连接建表插入数据实例 基本查询回顾 建表 插入数据 实例 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降…

[论文分享]TimeDRL:多元时间序列的解纠缠表示学习

论文题目&#xff1a;TimeDRL: Disentangled Representation Learning for Multivariate Time-Series 论文地址&#xff1a;https://arxiv.org/abs/2312.04142 代码地址&#xff1a;暂无 关键要点&#xff1a;多元时间序列&#xff0c;自监督表征学习&#xff0c;分类和预测 摘…

基于红外传感的野外变压站生物入侵检测系统(论文+源码)

1. 系统设计 本课题为基于红外传感的野外变压站生物入侵检测系统&#xff0c;主要是针对野外变压站生物入侵的问题进行设计&#xff0c;整个系统的框图如图经过上述的功能需求分析和各个关键模块的选型后&#xff0c;最终得到了如图2.1所示的&#xff0c;采用STC89C52单片机为…

Linux中history使用(过滤,显示时间,查找)

显示历史命令 history 显示最后几条执行命令 history 5 显示history记录中命令执行时间 export HISTTIMEFORMAT"%F %T " 显示命令中有某些内容的最后几条执行命令 history | grep key | tail -n 2

适用于车载电动升窗器的解决方案

升窗器是指避免车主忘记关窗的自动关窗装置&#xff0c;主要通过电子模块加认组合&#xff0c;利用主机上的芯片里面设定的程序完成检测功能&#xff0c;使自动升窗步骤顺利完成。 ■ 基于ACM32F403系列MCU ■ 高性价比软件控制方案&#xff0c;高算力 ■ MCU内置2路CAN总线&a…