相关疑难解决方法(0)

使用迭代样式在JavaScript中克隆对象

是否可以重写以下JavaScript递归函数以使其更快?

function clone_recursive(object) {
    var result = {};
    for (var key in object) {
        var value = object[key];
        if (typeof value === 'object') {
            result[key] = clone_recursive(value);
        } else {
            result[key] = value;
        }
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我以迭代的方式重写了它,但它没有获得任何性能,实际上速度下降了≈20%.

function clone_iterative(object) {
    var result = {};
    var queue = [{base: result, value: object}];
    var item;
    while (item = queue.shift()) {
        var current = item.value;
        var base = item.base;
        for (var key in current) {
            var value = current[key];
            if (typeof …
Run Code Online (Sandbox Code Playgroud)

javascript iteration algorithm tree recursion

13
推荐指数
1
解决办法
713
查看次数

如何使用setState插入数组,反应js

我正在寻找修改和数组响应和插入特定索引上的元素.这就是我的状态:

this.state = {arr: ['', '', '', '' ]}
Run Code Online (Sandbox Code Playgroud)

我想做的是编译它arr[index] = 'random element'以反应js setState语法.我试图做的是:

this.setState({ arr[index]: 'random element' })
Run Code Online (Sandbox Code Playgroud)

但是失败了,ty!

javascript arrays reactjs

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

用另一个对象替换一个javascript对象

在页面加载,我创建了两个JavaScript对象,objDemo1objDemo1Backup其中后者仅仅是第一的精确副本.

例如

objDemo1 { 
    sub_1 = { something: 123, somethingElse: 321 },
    sub_2 = { something: 456, somethingElse: 654 }
}
Run Code Online (Sandbox Code Playgroud)

我可以修改值sub_以及添加/删除新sub_的但是我正在编辑的唯一对象是objDemo1.即我永远不会改变objDemo1Backup

我有一个重置按钮,单击该按钮将重置objDemo1为最初加载页面时的状态(即objDemo1 = objDemo1Backup).这是我遇到问题的地方..

如何设置objDemo1objDemo1Backup

我试过了:

objDemo1 = objDemo1Backup;
Run Code Online (Sandbox Code Playgroud)

objDemo1 = null;
var objDemo1 = objDemo1Backup;
Run Code Online (Sandbox Code Playgroud)

...以及类似的变化,但似乎没有任何工作.有任何想法吗?

  • 注意:我可以确认,在重置时,objDemo1Backup它与我创建它并objDemo1更改时完全相同.
  • 我的代码肯定会达到"重置"功能,我已经尝试了objDemo1 = objDemo1Backup...我只是无法弄清楚替换对象的语法.

javascript reset javascript-objects

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

如何克隆Javascript对象数组?

我有一个结果集,它是一个对象数组.我需要克隆它,以便我可以对其进行更改,而无需触及原始数据.

var data = w2ui.grid.records,
exclude = Array('recid', 'w2ui'); // Exclude these data points from the pivot
// Modify our tempData records to remove HTML
$.each(data, function(key, value) {
    $.each(value, function(_key, _value) {
        if(jQuery.inArray(_key, exclude) != -1) {
            delete data[key][_key];
        }else{
            data[key][_key] = $('<div>'+_value+'</div>').text(); // <div></div> for those which are simply strings.
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我创建了一个名为的变量data并将其设置为我的"源数据".

我希望能够对这个新的数据变量进行更改,但看起来在对其进行更改时,源数据正在被更改(w2ui.grid.records).

有没有正确的方法来克隆这个集合,所以我可以有一个新的数据实例来修改?

javascript jquery

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

在JavaScript中克隆对象

考虑下面的代码或检查这个小提琴.

var obj = {
    name: "abc",
    age: 20
}

var objTwo;

console.log(obj.age);
objTwo = obj;
objTwo.age = 10;
console.log(obj.age);
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为obj的对象,它有两个属性.现在我将obj分配给另一个名为objTwo的对象.现在我更新objTwo中的一个属性.同样的变化也反映在obj上.如何在不创建引用的情况下将值从一个对象分配给另一个对象?

javascript clone object

10
推荐指数
1
解决办法
890
查看次数

深度克隆类实例 JavaScript

我试图找出一种方法来深度克隆 JS 类实例,同时保留链中的所有原型。

我已经看到了如何深度克隆和对象:

JSON.parse(JSON.stringify(instance))
Run Code Online (Sandbox Code Playgroud)

我已经看到了如何制作类实例的浅拷贝:

Object.assign( Object.create( Object.getPrototypeOf(instance) ), instance)
Run Code Online (Sandbox Code Playgroud)

但我的问题是,有没有办法深度克隆一个类的实例?

javascript ecmascript-6

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

如何在Javascript中解冻/解冻冻结对象?

你能告诉我如何在Javascript中解冻一个冻结的对象,以便我能够修改它的属性吗?

var pizza = {
    name: 'Peri Peri',
    Topping: 'Prawn'
};

Object.freeze(pizza);

// Can't change the name of the object because it's frozen
pizza.name = 'Hawaiian';
Run Code Online (Sandbox Code Playgroud)

javascript object

9
推荐指数
1
解决办法
4412
查看次数

angular.copy()和JSON.parse(JSON.stringify())之间的区别?

有人能解释angular.copy()和JSON.parse(JSON.stringify())之间的区别吗?有吗?你会建议使用什么?angular.fromJson(angular.toJson())是否与JSON.parse(JSON.stringify())相同?

我只想提一下,我如何正确克隆JavaScript对象?对于angular.copy()的JSON.parse(JSON.stringify())和angular.copy()引用.

javascript json clone object angularjs

8
推荐指数
2
解决办法
2725
查看次数

Input(() 字段中的更改是否会传播到父组件?

我的理解是,我可以使用指令 @Input() 将数据传递给子组件,并使用 @Output() 和适当的发射将数据发送回父组件。但我不知道 @Input() 字段中的更改数据会发送到父级。它是否正确?

我修改了组件通信工作簿以重现此https://input-params.stackblitz.io

你可以解释吗?

谢谢,

typescript angular

7
推荐指数
1
解决办法
2696
查看次数

Javascript:获取前一周的周一和周日

我使用以下脚本获取前一周的周一(第一个)和周日(最后一个):

var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay() - 6; // Gets day of the month (e.g. 21) - the day of the week (e.g. wednesday = 3) = Sunday (18th) - 6
var last = first + 6; // last day is the first day + 6
var startDate = new Date(curr.setDate(first));
var endDate = new Date(curr.setDate(last));
Run Code Online (Sandbox Code Playgroud)

如果上个星期一和星期天也在同一个月,这个工作正常,但我今天才注意到,如果今天是12月,而上个星期一是11月,它就不起作用.

我是JS的新手,还有另外一种方法可以获得这些日期吗?

javascript

6
推荐指数
2
解决办法
2万
查看次数