javascript - 如何从这些属性中构造一个新对象?
问题描述
所以,这是我的目标:
const data = [ {
main: 7,
second: 2
otherData: 'some string'
} ]
我需要用特定的属性创建一个新对象,所以最后它应该看起来像:
const newData = {
7: {
second: 2
}
}
我尝试使用 解决它.reduce()
,但不知道如何省略某些属性。
const newData = data.reduce((obj, curr, index) => {
return {
..obj, [index]: curr
};
}, {});
产生:
{ '0':
{ main: 7,
second: 3
}
}
我究竟做错了什么?
谢谢。
解决方案
您将数组和对象混为一谈。如果我理解正确,你想要的是:
const newData = data.map(obj => {
return {
[obj.main]: {
second: obj.second
}
};
});
鉴于您的样本输入
const data = [ {
main: 7,
second: 2
otherData: 'some string'
} ];
这会回馈
[
{
7: {
second: 2
}
}
]
从评论更新
听起来你确实想在这里减少。用这个:
const reduced = data.reduce((acc, {main, second}, index) => {
acc[main] = {second, index};
return acc;
}, {});
您的样本输入给出了哪个
{
'7': {
second: 2,
index: 0
}
}
请注意,正如我在下面所说的那样要小心,因为与main
前一个相同的对象将覆盖先前的条目。
推荐阅读
- oim - Oracle IDAM 安装 | 系统要求
- json - 使用分页包和 JSON 的 Flutter 应用程序
- vba - 电子邮件中的链接 (DoCmd.SendObject)
- jwt - JWT RS256 - 中间人可以在令牌到达客户端之前获得令牌吗?
- compiler-errors - Jags RUNTIME ERROR:第 17 行的编译错误。尝试重新定义节点 delta[15,1,1]
- angular - 带有免费输入的Angular 6下拉列表
- python - FOR 循环问题和 IP 地址相关性
- python - 如果可以通过在列表中放置加法或减法运算来获得目标整数,则编写应返回 true 的函数
- amazon-web-services - 具有无服务器本地环境的 AWS Cognito
- c++ - 为什么 C++ 正则表达式这么慢?