javascript - 如何使用 JavaScript ES6 过滤和转换这个集合?
问题描述
我有一个查询函数,它输出一组元素,具有如下简化结构:
var obj = [
{
body: [
{
prop1: 2,
prop2: 17,
// ...more props,
date: '2020-08-30',
},
{
prop1: 2,
prop2: 1,
// ...more props,
date: '2020-08-29',
},
// ...
],
// ...additional elements,
slug: 'Bay'
},
// ...
]
如何仅使用 JavaScript 代码或 ES6 函数有效地过滤和转换此结果对象,其中date
嵌套在body
数组中的值是今天并且排除了附加元素?
这是我的预期结果:
var obj = [
{
prop1: 2,
prop2: 17,
// ...more props,
date: '2020-08-30',
slug: 'Bay'
},
// ...
]
编辑:要清楚,
body
匹配条件(今天)的数组内的对象date
应合并到父对象。- 该结构保证不会有重复的属性。
body
每个数组中最多只存在一个对象date
。 slug
,prop1
,prop2
等都是唯一索引,也不应该引起重复的属性问题。- 每个对象中的
body
数组和集合本身都会非常大,因此如果解决方案有效,我将不胜感激。
并且还应该清楚的是,如果date
今天不匹配body
数组中的任何对象,它应该跳过父对象。
例如:
var obj = [
{ // Object 1
body: [
{
prop1: 2,
prop2: 17,
// ...more props,
date: '2020-08-30',
}
],
// ...additional elements,
slug: 'Bay'
},
{ // Object 2
body: [
{
prop1: 2,
prop2: 1,
// ...more props,
date: '2020-08-29',
}
],
// ...additional elements,
slug: 'Mino'
}
]
预期结果将是:
var obj = [
{ // Object 1
prop1: 2,
prop2: 17,
// ...more props,
date: '2020-08-30',
slug: 'Bay'
}
]
解决方案
这将提供所需的结果
var today = "2020-08-30";
var resultObj = [];
var obj = [
{
body: [
{
prop1: 2,
prop2: 17,
// ...more props,
date: '2020-08-30',
},
{
prop1: 2,
prop2: 1,
// ...more props,
date: '2020-08-29',
},
// ...
],
// ...additional elements,
slug: 'Bay'
},
// ...
]
for(var objData of obj) {
for(var bodyData of objData.body) {
if(bodyData.date == today) {
bodyData.slug = objData.slug;
resultObj.push(bodyData);
}
}
}
console.log(resultObj)
推荐阅读
- php - 如何在 laravel Blade.php 文件中使用外部 PHP 文件?
- javascript - 在 node.js 中一次握手后 Web-socket 连接断开并做出反应
- php - WooCoomerce WC_Abstract_Order::get_coupon_codes PHP 致命错误
- bash - 用于在 postgres 中使用密码创建用户的 Shell 脚本失败并带有引号
- tensorflow - 如何直接在 gpu 中跨不同深度学习框架转换数据(张量)而不复制到 cpu?
- c - 使用 dlopen 处理库中的自定义类型
- javascript - DataTables - 内容更新后排序不起作用
- javascript - 将包含图像的 HTML 渲染为 PDF Django
- mysql - 无效的 utf8 字符串。将“latin1_german1_ci”列完全转换为 UTF8
- php - 根据 Woocommerce 中的特定城市显示货到付款 (COD)