Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换处于状态的数组元素(整数)_Javascript_Reactjs_Immutability - Fatal编程技术网

Javascript 替换处于状态的数组元素(整数)

Javascript 替换处于状态的数组元素(整数),javascript,reactjs,immutability,Javascript,Reactjs,Immutability,我在React的状态下有一个简单数组,它只包含整数: this.state = { myArray: [1,2,3] } 我试图以不变的方式替换一个值(值2应替换为8): 但我的方式在状态中不会改变。我想我没有使用对象。请以正确的方式分配。您可以使用来复制数组,修改副本,然后分配它。因为您正在创建一个新的数组而不是修改现有的数组,所以您仍然可以避免变异问题 const valueToReplace = 2 const newValue = 8 const newArray = this.s

我在React的
状态下有一个简单数组
,它只包含整数:

this.state = {
  myArray: [1,2,3]
}
我试图以不变的方式替换一个值(值
2
应替换为
8
):

但我的方式在状态中不会改变。我想我没有使用
对象。请以正确的方式分配

您可以使用来复制数组,修改副本,然后分配它。因为您正在创建一个新的数组而不是修改现有的数组,所以您仍然可以避免变异问题

const valueToReplace = 2
const newValue = 8
const newArray = this.state.myArray.slice() // copy
const arrayPosition = newArray.indexOf(valueToReplace)
newArray[arrayPosition] = newValue

this.setState({myArray: newArray})

最好先创建阵列的克隆,然后替换该值:

const valueToReplace = 2
const newValue = 8
const myArray = this.state.myArray.slice(0);
const arrayPosition = myArray.indexOf(valueToReplace)
myArray[arrayPosition] = newValue

this.setState({myArray: newArray})
Object.assign
只是将对象/数组克隆到另一个变量中,并且不更改数组中的值

const valueToReplace = 2
const newValue = 8
const myArray = this.state.myArray.slice(0);
const arrayPosition = myArray.indexOf(valueToReplace)
myArray[arrayPosition] = newValue

this.setState({myArray: newArray})