通过引用传递对象数组,并将实际数组保存在JavaScript中

通过引用传递对象数组,并将实际数组保存在JavaScript中,javascript,arrays,asp.net-mvc,web,Javascript,Arrays,Asp.net Mvc,Web,我将数组传递给函数。因为,在javascript中, 默认情况下,数组通过引用传递。我试图创建数组的副本。但最终,函数中执行的操作会影响实际的数组数据 我只想保存数组的实际状态 这是我的密码: let arrcopy =new Array( items.dt); citem = binarySearch(arrcopy[0], ind.ItemID); 您的意思是希望保持原始数组的原样(您希望保持不变性) 然后使用减少方法 const test = (arr) => {

我将数组传递给函数。因为,在javascript中, 默认情况下,数组通过引用传递。我试图创建数组的副本。但最终,函数中执行的操作会影响实际的数组数据

我只想保存数组的实际状态

这是我的密码:

let  arrcopy =new Array( items.dt);
citem = binarySearch(arrcopy[0], ind.ItemID);

您的意思是希望保持原始数组的原样(您希望保持不变性)

然后使用减少方法

    const test = (arr) => {
    return arr.reduce((result, val) => {
       // do the needful here
      result.push(val);
      return result;
    }, []);
}

期望(arr).to.be.equal(结果);=>将返回false,因为原始数组不会更新

您需要使用创建数组作为副本

或者只需使用销毁/扩展操作符的方式ES6就足够了

let arrcopy = [...items.dt];

这使得我的工作

my glassball的最佳猜测是你想深度复制一个数组,但是根据给定的代码和文本,我一点也不确定。可能重复的是我想要一个数组的深度副本我正在使用项目的对象数组将它们发送到二进制搜索方法当我从方法中获得结果时,原始项目数组中只剩下一个项目
let arrcopy = [...items.dt];
JSON.parse(JSON.stingify(items.dt))