javascript - 过滤数据 - 如何在 JavaScript 中过滤不需要的数据
问题描述
我有一个 JSON 文件,其中包含需要过滤的数据。
json是这个示例结构:
[{A:"data", C:"flightData", D:"FlightData"},
{B:"data", C:"flightData", D:"FlightData"},
{A:"data", C:"flightData", D:"FlightData"},
{B:"data", C:"flightData"},
{A:"data", C:"flightData", D:"FlightData"},
{B:"data", D:"FlightData"}]
我正在按方法使用分组
function groupBy(list, keyGetter) {
const map = new Map();
list.forEach((item) => {
const key = keyGetter(item);
const collection = map.get(key);
if (!collection) {
map.set(key, [item]);
} else {
collection.push(item);
}
});
return map;
}
首先,我按 A 或 B 分组为数组
A is [[C],[D]]
和B is[[C],[D]]
但是,如果数据没有 C 或 DI,则需要删除该组,因为不需要该数据。
for (let value of s1) {
// A or B
const routeGrouped = groupBy(PriceArrayFinal, route =>
route.FinalArrival);
for (let origin of s3) {
// C or D
const originGrouped = groupBy(routeGrouped.get(value), route =>
route.FirstDepartCityName);
是否可以删除整个组,例如 A: [ [C], [] ]
如果 C 或 D 不存在。如果有空数组,我需要删除A组还是B组?
编辑:预期输出:A 或 B 的所有组都有 C 和 D
[{A:"data", C:"flightData", D:"FlightData"},
{B:"data", C:"flightData", D:"FlightData"},
{A:"data", C:"flightData", D:"FlightData"},
{A:"data", C:"flightData", D:"FlightData"}]
[ [ [Array], [Array] ], [ [Array], [Array] ] ,[ [Array], [Array] ], [ [Array], [Array] ] ]
解决方案
如果你想获取所有对C
&&有价值的对象D
,你可以filter
这样使用:
let input=[{A:"data",C:"flightData",D:"FlightData"},{B:"data",C:"flightData",D:"FlightData"},{A:"data",C:"flightData",D:"FlightData"},{B:"data",C:"flightData"},{A:"data",C:"flightData",D:"FlightData"},{B:"data",D:"FlightData"}];
let output = input.filter(({ C, D }) => C && D);
console.log(output)
推荐阅读
- firebase - Google Firebase 实时数据库加密
- windows - 为其他计算机定义 COM 端口
- python - 在 Red Hat Linux 上安装 cvxpy 的问题
- ruby-on-rails - 如何在rails中销毁与登录用户相关的所有任务
- image - 从不安全的注册表中提取图像 - 在 containerd 上
- docker - Docker写权限被拒绝
- next.js - 我可以使用来自另一个后端服务器的 API 服务,而 Nextjs 中没有默认的 api 路由吗?
- java - 如何使用 Mockito 和 Junit 模拟 ZonedDateTime
- python - Google Sheets API 在 Mac M1 Python 上运行缓慢
- python-3.x - 如何简化/固定此列表展平?