Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 - Fatal编程技术网

Javascript 交换数组中的对象而不改变数组

Javascript 交换数组中的对象而不改变数组,javascript,reactjs,Javascript,Reactjs,我正在做DragnDroping,交换时需要交换元素,有一个对象数组,活动对象和被交换对象的索引,如何在js中交换它们而不改变原始对象 let allData = [{name:1},{name:2},{name:3}] 交换后我需要得到 [{name:2},{name:1},{name:3}] 举例说明我需要做什么 case CHANGE_TAB_ORDER: const {activeElementIndex} = action.payload;

我正在做DragnDroping,交换时需要交换元素,有一个对象数组,活动对象和被交换对象的索引,如何在js中交换它们而不改变原始对象

let allData = [{name:1},{name:2},{name:3}]
交换后我需要得到

[{name:2},{name:1},{name:3}]
举例说明我需要做什么

case CHANGE_TAB_ORDER:
            const {activeElementIndex} = action.payload;
            const {swapedElementIndex} = action.payload

            return {
                ...state,
                stages: ? here i need to swap objects in array with  activeElementIndex and  swapedElementIndex
            }

stages是对象数组

如果要在数组中进行操作而不改变原始对象,则应首先创建一个副本,然后只需要一个temp变量来交换项,并返回新数组

const数组=[{name:1},{name:2},{name:3}]//原始对象
const arrayCopy=Object.assign({},array)//克隆对象!
功能交换(pos1、pos2、nextArray){
const temp=nextArray[pos1];//临时变量
nextArray[pos1]=nextArray[pos2];//交换项目
nextArray[pos2]=温度;
return nextArray;//返回数组
}
常量交换阵列=交换阵列(0,1,阵列复制);

console.log(swappedArray)//打印数组:)
而不进行修改您的意思是创建一个副本?然后像这样

const {activeElementIndex, swapedElementIndex} = action.payload
return {
  ...state,
  stages: (stages => { 
    [stages[activeElementIndex], stages[swapedElementIndex]] =
      [stages[swapedElementIndex], stages[activeElementIndex]];
    return stages })([...state.stages])  
}

(如果你想保存一个旧的,那么就用state.stages替换我代码中的[…state.stages]。

这能回答你的问题吗?是的,但是我怎样才能正确地交换它们呢?我更新了我的问题答案中有什么让人困惑?其中一些函数提供了获取一个数组和两个索引并返回变异数组的函数。。。