gpt4 book ai didi

javascript - 在数组中创建对象的副本

转载 作者:行者123 更新时间:2023-12-01 22:54:42 24 4
gpt4 key购买 nike

我正在react-native中运行示例应用程序。我有一个包含对象列表的示例数组,即 [a,b,c,d,e]。我正在数组中创建 对象 a 的重复项,它创建了 对象 a 的重复项,我正在数组中创建另一个对象重复项,但它被替换为 >反对重复。如何解决这个问题...请帮助我。这是我的代码:

export default class AllCategories_list extends Component {
constructor(props) {
super(props)
this.state = {
dataSource: new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 })
}
}
duplicate(index) {
var duplication = []
var duplicationObj = Object.assign({}, index) //Object.create(duplicateArray)

duplication.push(duplicationObj)
alert(JSON.stringify(duplication))
var finalArray = array.concat(duplication)
this.setState({
dataSource: this.state.dataSource.cloneWithRows(finalArray)
})
}
rowData(list) {
// alert(JSON.stringify(list))
return (
<View style={styles.listContainer}>
<TouchableOpacity onPress={this.duplicate.bind(this, list)}>

<Text style={styles.item}>{list}</Text>
</TouchableOpacity>
</View>
)
}
render() {
return (
<View style={styles.container}>
<ListView
contentContainerStyle={styles.list}
dataSource={this.state.dataSource}
// horizontal={true}
renderRow={this.rowData.bind(this)}
/>
</View>
)
}
}

最佳答案

根据 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign ,Object.assign 不进行深度克隆,“对于深度克隆,我们需要使用其他替代方案,因为 Object.assign() 复制属性值。如果源值是对对象的引用,则它只复制该引用值。”

如果你的对象是可序列化的,那么你可以这样做

    duplicate(index) {
var finalArray = JSON.parse(JSON.stringify(index));
this.setState({
dataSource: this.state.dataSource.cloneWithRows(finalArray)
})
}

关于javascript - 在数组中创建对象的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50616527/

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