相关疑难解决方法(0)

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

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

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

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

javascript clone object

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

(深)使用jQuery复制数组

可能重复:
克隆JavaScript对象的最有效方法是什么?

我需要复制一个(有序的,非关联的)对象数组.我正在使用jQuery.我最初尝试过

jquery.extend({}, myArray)
Run Code Online (Sandbox Code Playgroud)

但是,当然,这给了我一个对象,我需要一个数组(顺便说一句,真的很喜欢jquery.extend).

那么,复制数组的最佳方法是什么?

javascript jquery

210
推荐指数
5
解决办法
12万
查看次数

在Angular 2 + TypeScript中深层复制数组

我有一个输入的对象数组.让我们来称呼它content.

尝试深度复制时,它仍然具有对前一个数组的引用.

我需要复制该输入数组,并更改重复部分的一个属性.

很久以来我尝试了不成功的不同方法.

ES6方式:

public duplicateArray() {
  arr = [...this.content]
  arr.map((x) => {x.status = DEFAULT});
  return this.content.concat(arr);
}
Run Code Online (Sandbox Code Playgroud)

slice方式:

public duplicateArray() {
  arr = this.content.slice(0);
  arr.map((x) => {x.status = DEFAULT});
  return this.content.concat(arr);
}
Run Code Online (Sandbox Code Playgroud)

在这两个数组中,所有对象都有status: 'Default'.

在Angular 2中深度复制数组的最佳方法是什么?

javascript typescript angular

63
推荐指数
7
解决办法
9万
查看次数

在Javascript中,当执行深层复制时,如何避免循环,因为属性为"this"?

我有一些图书馆代码在我身上无休止地骑自行车.

我不清楚如何在javascript中最好地执行循环检测和避免.也就是说,没有程序化的方法来检查一个物体是否来自"这个"参考,是吗?

这是代码.谢谢!

setAttrs: function(config) {
    var go = Kinetic.GlobalObject;
    var that = this;

    // set properties from config
    if(config !== undefined) {
        function setAttrs(obj, c) {
            for(var key in c) {
                var val = c[key];

                /*
                 * if property is an object, then add an empty object
                 * to the node and then traverse
                 */
                if(go._isObject(val) && !go._isArray(val) && !go._isElement(val)) {
                    if(obj[key] === undefined) {
                        obj[key] = {};
                    }
                    setAttrs(obj[key], val);  // <--- offending code; 
                                              // one of my …
Run Code Online (Sandbox Code Playgroud)

javascript deep-copy kineticjs

14
推荐指数
1
解决办法
4606
查看次数

为什么当我更改副本时原始数组会更改?

我正在尝试使用回溯法制作数独求解器,但遇到了问题。每当我更改网格数组的副本时,原始数组也会更改。

有人能帮助我吗?

算法:

let grid = [
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

2
推荐指数
1
解决办法
80
查看次数

为什么我不能在JS中复制这个2d数组?我怎样才能复制?

我正在实施John Conway生命游戏,但我遇到了一个奇怪的问题.如果代码给我带来麻烦,这是一个简短的版本:

let lifeMap = [
  [true, false, false],
  [false, false, false],
  [false, false, false]
];
let oldLifeMap = lifeMap.slice();
for (let row = 0; row < lifeMap.length; row++) {
  for (let val = 0; val < lifeMap[row].length; val++) {
    let bool = lifeMap[row][val];
    let newBool = false; // here is where I would determine if cell is alive/dead
    lifeMap[row][val] = newBool;
    if (row === 0 && val === 0) console.log("at (0,0)", oldLifeMap[0][0]);
  }
}
Run Code Online (Sandbox Code Playgroud)

为了响应此代码,JavaScript打印at (0,0) false.我需要它一直 …

javascript arrays copy multidimensional-array conways-game-of-life

1
推荐指数
2
解决办法
492
查看次数