javascript - 在不知道密钥的情况下从 Javascript 中的动态数组对象访问密钥
问题描述
var data = [
{ 'Promotions 1': 2192, 'dates': '2021-02-04' },
{ 'Promotions 23': 767, 'dates': '2021-02-06' },
{ 'Promotions 12': 2264,'dates': '2021-02-08' },
];
问题是促销是动态键,仅访问日期键值。我想要下面这样的输出。我希望在所有促销活动的每个日期都独一无二
var totalUserJoined = [
{
'Promotions 1': 2192,
'Promotions 23': 767,
'Promotions 12': 2264 ,
'dates': '2021-02-04'
},
{
'Promotions 1': 2192,
'Promotions 23': 767,
'Promotions 12': 2264 ,
'dates': '2021-02-06'
},
{
'Promotions 1': 2192,
'Promotions 23': 767,
'Promotions 12': 2264 ,
'dates': '2021-02-08'
}
];
解决方案
您可以使用.map()
和解构赋值dates
来获取除它们自己的对象之外的所有键。一旦您拥有一组仅包含促销键的对象(即:无dates
),您可以将它们全部合并在一起Object.assign()
以形成一个对象。然后您可以.map()
在原始data
数组上使用将促销对象与每个日期合并:
const data = [ { 'Promotions 1': 2192, 'dates': '2021-02-04' }, { 'Promotions 23': 767, 'dates': '2021-02-06' }, { 'Promotions 12': 2264,'dates': '2021-02-08' }, ];
const promotions = Object.assign(...data.map(({dates, ...rest}) => rest));
const res = data.map(({dates}) => ({...promotions, dates}));
console.log(res);
推荐阅读
- graph - Neo4j 中图形和数据库之间的层次结构/关系是什么?
- laravel - Laravel API 路由 - 相同的路径,多种方法
- python - 蟒蛇3;文档;从 word doc 中替换文本会修改段落后的间距——如何避免或改回来?
- java - 在 JNI 中,您可以将 C 整数参数传递给 Java 原始 int 吗?
- mysql - MySQL - 将数据从一个数据库更改和复制到另一个
- git - 全局 git 配置 Intellij
- android - Firebase 存储将文件下载到 Android Q 中的图片或电影文件夹
- python - 如何在列表理解中定义函数?
- express - 高度混乱的 express.Router() 问题
- python - 将许多正则表达式操作组合在一起