相关疑难解决方法(0)

在JavaScript中深度克隆对象的最有效方法是什么?

克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持.

我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率.

我也看到了具有各种缺陷的递归复制功能.
我很惊讶没有规范的解决方案.

javascript clone object

5181
推荐指数
48
解决办法
189万
查看次数

按值复制数组

将JavaScript中的数组复制到另一个数组时:

var arr1 = ['a','b','c'];
var arr2 = arr1;
arr2.push('d');  //Now, arr1 = ['a','b','c','d']
Run Code Online (Sandbox Code Playgroud)

我意识到arr2引用相同的数组arr1,而不是一个新的独立数组.如何复制数组以获得两个独立的数组?

javascript arrays

1638
推荐指数
20
解决办法
85万
查看次数

在javascript中深层复制嵌套对象的数组

我试图在javascript中深层复制嵌套对象的数组.我的阵列看起来像这样

var arr = [{name:"adam",age:"21"},
    {name:"freddie",age:"35",children:[{name:"mercury",age:"25"}]},
    {name:"jim",age:"35",children:[{name:"morrison",age:"25",children:[{name:"some", age:"40"}]}]}
    ];
Run Code Online (Sandbox Code Playgroud)

我想对数组中的每个对象进行深层复制,我希望将arr的精确副本创建为不应该有对象引用的新数组.数组的深度也是未知的,即子数组可以达到任何级别.我已经通过这个链接 将一个对象数组复制到另一个数组而没有javascript中的对象引用(深层复制),但这对我没有帮助.我用google搜索并在jQuery中找到了一些解决方案,但这对我没有帮助,因为我对jQuery没有任何了解.

我也尝试用递归实现它,但这也不起作用 http://ideone.com/kJi5X3

我想在不使用jQuery或任何东西的情况下在javascript中完成它.我是JavaScript的新手,所以如果有任何库或简单的方法,我可能会错过.请帮我解决这个问题.提前致谢.

javascript arrays deep-copy

20
推荐指数
1
解决办法
9806
查看次数

在javascript中将对象数组复制到另一个数组中(Deep Copy)

使用slice(0)和concat()在javascript中将对象数组复制到另一个数组中不起作用.

我已经尝试了以下测试,如果我使用这个获得深度复制的预期行为.但是,在复制的数组中进行更改后,原始数组也会被修改.

var tags = [];
for(var i=0; i<3; i++) {
    tags.push({
        sortOrder: i,
        type: 'miss'
    })
}
for(var tag in tags) { 
    if(tags[tag].sortOrder == 1) {
        tags[tag].type = 'done'
    }
}
console.dir(tags)

var copy = tags.slice(0)
console.dir(copy)

copy[0].type = 'test'
console.dir(tags)

var another = tags.concat()
another[0].type = 'miss'
console.dir(tags)
Run Code Online (Sandbox Code Playgroud)

如何将数组的深层副本复制到另一个数组中,以便在复制数组中进行更改时不会修改原始数组.

javascript arrays google-chrome deep-copy node.js

19
推荐指数
3
解决办法
4万
查看次数

错误:沉浸式制作人返回了一个新值*并且*修改了其草稿。返回一个新值*或*修改草稿

我有我的减速机


const userAuthSlice = createSlice({
    name: "userAuth",
    initialState: {
        token: '',
    },
    reducers: {
        setToken: (state, action) => state.token = action.payload.test,
    },
});

Run Code Online (Sandbox Code Playgroud)

我有我的调度命令

<button
   value={text.sign_in.submit}
   onClick={() => dispatch(userAuthSlice.actions.setToken({test:"test"}))}

/>
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时,我得到的是这个错误:

在此处输入图片说明

我已经隔离了所有内容,以确保这是问题所在,而没有其他问题。

为什么会弹出这个错误?

reactjs redux immer.js redux-toolkit

10
推荐指数
3
解决办法
8628
查看次数