gpt4 book ai didi

javascript - 更新集合中深层嵌套的对象

转载 作者:行者123 更新时间:2023-11-28 17:16:12 25 4
gpt4 key购买 nike

我的结构如下 -

var a = {
foo: {
dates: {'2018-11-29': 2020.55},
strategies: [
{
expiryDate: '2018-11-29',
projects: [
{
expiryDate: '2018-11-29',
name: 'foo',
value: 500
}
]
}
]
},
bar: {
dates: {'2018-11-29': 2020.55},
strategies: [
{
expiryDate: '2018-11-29',
projects: [
{
expiryDate: '2018-11-22',
name: 'bar',
value: 650
},
{
expiryDate: '2018-11-22',
name: 'mario',
value: 700
}
]
}
]
}
}

我正在尝试找出一种方法,能够使用 lodash 轻松更新内部 projects 集合。但我收到错误

我正在尝试做这样的事情

const finalTransformedData = _.mapValues(
a,
(value, key) => {
value.strategies.map(strats =>
strats.projects.map(trade =>
Object.assign(
{},
{ trade: 1 },
),
),
);
},
);

但我得到以下输出 - 我哪里出错了?

{ foo: undefined, bar: undefined }

上面的示例代码有点过于简单,但我正在寻找的是以某种方式轻松操作项目数组中的对象 - 本质上得到这样的东西 - 通过循环遍历数组中的对象并分配一个新的来替换数组中的对象对象(从object.assign获取)

foo: {
dates: {'2018-11-29': 2020.55},
strategies: [
{
expiryDate: '2018-11-29',
projects: [
{
trade: 1
}
]
}
]
},
bar: {
dates: {'2018-11-29': 2020.55},
strategies: [
{
expiryDate: '2018-11-29',
projects: [
{
trade: 1
},
{
trade: 1
}
]
}
]
}

最佳答案

没有lodash,你也可以尝试循环for..of

var a = {  foo: {    dates: {'2018-11-29': 2020.55},    strategies: [      {        expiryDate: '2018-11-29',        projects: [          {            expiryDate: '2018-11-29',            name: 'foo',            value: 500          }        ]      }    ]  },  bar: {    dates: {'2018-11-29': 2020.55},    strategies: [      {        expiryDate: '2018-11-29',        projects: [          {            expiryDate: '2018-11-22',            name: 'bar',            value: 650          },          {            expiryDate: '2018-11-22',            name: 'mario',            value: 700          }        ]      }    ]  }}

for(let { strategies } of Object.values(a)) {
for(let s of strategies) {
s.projects = s.projects.map(d => ({ trade: 1 }))
}
}

console.log(a)

关于javascript - 更新集合中深层嵌套的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com