gpt4 book ai didi

javascript - push 方法不返回新数组

转载 作者:行者123 更新时间:2023-11-30 19:56:30 27 4
gpt4 key购买 nike

我正在通过 javascript push() 方法将对象添加到数组。我的数组是一个对象数组。我想 console.log() 新数组。但它给了我新数组的长度。我知道 push() 方法返回新数组的长度,但我想在我的应用程序中使用新数组。获取方式

    let sub_sprite = this.state.sub_sprite;
let updated_sub_subsprite;
updated_sub_subsprite = sub_sprite.push(this.state.sprite[that.state.sprite_count]);
console.log(updated_sub_subsprite);

that.setState({sub_sprite:updated_sub_subsprite}, ()=>{
console.log(this.state.sub_sprite)
});

最佳答案

不要使用 Array.push在存储在 React 组件状态中的数组上,它会直接改变状态,这可能会导致问题(see this article)。

您可以使用 Array.concat使用附加值创建一个新数组:

let sub_sprite = this.state.sub_sprite
let updated_sub_subsprite;
updated_sub_subsprite = sub_sprite.concat([this.state.sprite[that.state.sprite_count]]);
console.log(updated_sub_subsprite);
that.setState({sub_sprite:updated_sub_subsprite}, ()=> {
console.log(this.state.sub_sprite)
})

更简洁方便的方法是使用 spread syntax (注意三个点):

let sub_sprite = this.state.sub_sprite
let updated_sub_subsprite;
updated_sub_subsprite = [...sub_sprite, this.state.sprite[that.state.sprite_count]);
console.log(updated_sub_subsprite);
that.setState({sub_sprite:updated_sub_subsprite}, ()=> {
console.log(this.state.sub_sprite)
})

关于javascript - push 方法不返回新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53930540/

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