I have an object array called targetFarm, and when I run the map function, the value comes out like this.
targetFarm.children.map((item) => item.children.map((v) => console.log("v:", v)));
v = {
name: "coffee"
}
v = {
name: "tea"
}
v= {
name: "icecream"
}
What I want to do is put the value of this v.name in an array form using useState in the box constant. as below
box = [
"coffee",
"tea",
"icecream",
]
But when I used my code This error pops up.
"Cannot read property 'push' of undefined"
const [box, setBox] = useState(
targetFarm.children.map((item) => {
item.children.map((v) => {
box.push(v.name)
})
})
)
then How can i fix my code?
CodePudding user response:
What I want to do is put the value of this v.name in an array form using useState in the box constant
You can use map
and flatMap
like below
targetFarm.children.flatMap((item) => item.children.map((v) => v.name);
"Cannot read property 'push' of undefined"
From your code, box
has not been initialized yet, so undefined
does not have push
method. That's why it's throwing that error.
If you want to assign the default state value for box
, you can check the below example.
const [box, setBox] = useState(
targetFarm.children.flatMap((item) =>
item.children.map((v) => v.name)
)
)