gpt4 book ai didi

javascript - 对象和嵌套对象生成

转载 作者:行者123 更新时间:2023-12-01 01:16:35 27 4
gpt4 key购买 nike

我有一个自动生成的对象

this.state={
fruits = []
}

这是我如何生成对象并插入到fruits

const gen = (fruitname, price) => {
this.setState({
this.state.fruits: {...this.state.fruits, [fruitname]: price}
})
}

输出为

{apple: "$2", banana: "$4", orange: "$6"}

现在我需要嵌套类型,如下所示

   {apple: {
"red": "$3",
"Cripps": "$3",
"Honeycrisp": "$5"
},
banana: {
"small": "$4",
"yellow": "$5",
"green": "$2"
},
...
}

我将代码更新为

 const gen = (fruitname, price, types, eachPrice) => {
this.setState({
this.state.fruits: {...this.state.fruits, [fruitname]: { [types]: eachPrice} }
})
}

但是,每次输入时,我只能获得每种水果的一个对象

{苹果:{ “红色”:“3 美元”,},香蕉: { “小”:“4 美元”,},...}

如何保留全部?

最佳答案

如果我理解正确,您正在尝试将类型(键)数组映射到对象中的值(eachPrice)。如果是这种情况,您可以使用 .reduce 来实现此目的。在这里,我将 types 数组简化为一个对象,其中每个 type 都是一个键,每个值都是 eachPrice 数组中对应的价格。

参见下面的示例:

let state = {}
const gen = (fruitname, types, eachPrice) => {
state.fruit = {...state.fruit,
[fruitname]:
types.reduce((acc, t, i) => (
{ ...acc, [t]: eachPrice[i]}
), {})
}
}

gen("apple", ["red", "Cripps", "Honeycrisp"], ["$3", "$3", "$5"]);
gen("banana", ["small", "yellow", "green"], ["$4", "$5", "$2"]);

console.log(state.fruit);

请注意,此函数不使用 price 参数,因为您可以使用 eachPrice 来定义价格。

关于javascript - 对象和嵌套对象生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54701757/

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