相关疑难解决方法(0)

有没有办法让 lodash 复制属性 getter 和 setter?

在以下情况下,我发现 lodash 似乎没有复制源对象的 getter:

const _ = require("lodash");

let sourceObject = { };
Object.defineProperty(sourceObject, "abc", {
    get: () => 123
});

let cloneObject = _.cloneDeep(sourceObject);

console.log(sourceObject.abc); // 123
console.log(cloneObject.abc);  // undefined
Run Code Online (Sandbox Code Playgroud)

有没有办法用lodash模块实现上述目的?

javascript node.js lodash

4
推荐指数
1
解决办法
3175
查看次数

如何在 javascript/vuejs 中制作对象的副本

我正在使用 js 对象,可以说:

items: [{text: 'text1', active: true},
{text: 'text1', active: true},
{text: 'text1', active: true}]
Run Code Online (Sandbox Code Playgroud)

我想制作对象的副本并在计算属性中对它们进行一些更改,如下所示:

computed: {
   copyAndChange() {
      var itemsCopy = []
      itemsCopy = this.items
      for (var i=0; i<itemsCopy.length; i++) {
         itemsCopy[i].text = "something"
         console.log('text from items: ' + this.item[i])
         console.log('text from itemsCopy: ' + itemsCopy[i])
      }
      return itemsCopy
   }
}
Run Code Online (Sandbox Code Playgroud)

这段代码在控制台中给了我:

text from items: something
text from itemsCopy: something
text from items: something
text from itemsCopy: something
text from items: something
text from itemsCopy: something
Run Code Online (Sandbox Code Playgroud)

(?) …

javascript vue.js

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

为什么jQuery扩展方法不能复制我的javascript对象?

我在这里看了很多关于克隆和复制javascript对象的帖子,特别是这两个主题:

不过,这似乎对我不起作用.

这是我正在使用的一段代码:

var copiedObject = {};

$.getJSON(URL, null, function (data) {
     copiedObject = jQuery.extend(true, {}, data);
});

console.log(JSON.stringify(copiedObject));
Run Code Online (Sandbox Code Playgroud)

如果我在JSON调用中有我的控制台日志功能,它会输出正确的值,但在函数之后,它会被清空并输出{}.

我试过使用copiedObject = JSON.parse(JSON.stringify(data)),以及clone(obj)"在Javascript中复制一个对象"的功能,一切都无济于事.

我错过了什么吗?

javascript ajax jquery json object

3
推荐指数
1
解决办法
177
查看次数

克隆json对象和更改值也会改变原始对象

我想知道为什么会这样?

我有一个存储在var myObj中的json对象:

var myObj = JSON.parse(fs.readFileSync('json/data.json', 'utf8'));
Run Code Online (Sandbox Code Playgroud)

然后我通过以下方式从原始对象中获取克隆:

var modObj = myObj;
Run Code Online (Sandbox Code Playgroud)

之后我从clone中删除空值:

cleansedObj = removeEmpty(modObj);
Run Code Online (Sandbox Code Playgroud)

为什么这也会改变原始的myObj并从中删除空值?

这是功能:

function removeEmpty(obj) {
  Object.keys(obj).forEach(function(key) {
    if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key])
    else if (obj[key] === "") delete obj[key]
  });
  return obj;
};
Run Code Online (Sandbox Code Playgroud)

我通过这样做找到了一种解决方法,但似乎是不成功的操作:

var cleansedObj = JSON.stringify(myObj);
cleansedObj = removeEmpty(JSON.parse(cleansedObj));
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript json object

3
推荐指数
1
解决办法
2675
查看次数

Object.Freeze Javascript

如何在一个对象上提供Object.Freeze?

下面是我下面创建,其中例如a,我复制ab,冻结b,并尝试重新分配一个值a.但它已不再可能.为什么?我如何freeze只对一个对象做?

谢谢!

let a = { "teste" : [1,2,3] }

// I want 'b' freezed
const b = a;
Object.freeze(b);

a.teste = [4,5,6]

console.log(a)
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

3
推荐指数
1
解决办法
71
查看次数

GWT叠加深层复制

制作gwt叠加类型的深层副本的最佳方法是什么?

我正在寻找一个功能或库来检查GWT覆盖并克隆它.它必须能够克隆包含的数组或对象.

谢谢

gwt overlay clone

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

JavaScript:如何复制对象?

我正在尝试创建对象 a 的副本,而不必手动将其属性输入到对象 b 中。在此代码中,b 仅引用 a。我想创建一个新版本的a,这样当我向b添加属性时,通过a看不到它。

var a = new Object(); // create an empty object
var b = a;             // now b refers to the same object
b.test = 1;            // add a new property to b
alert(a.test);         // => 1: the new property is also visible through a
a === b;               // => true: a and b refer to the same object
Run Code Online (Sandbox Code Playgroud)

javascript copy object javascript-objects

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

为什么console.log显示不正确的对象值?

在我介绍这些数字之前,我不明白为什么包含的console.log显示.定期显示正确的内部结构.有人可以解释一下Google Chrome中的这种行为/错误吗? https://jsfiddle.net/ZSvyt/d1[100,200,300]for loopd1console.log

var container = {};
container["0"] = [10, 20, 30];
var d1 = container;

console.log('before console.log');
console.log(d1); // <--- IT DISPLAYS [100, 200, 300]. WHY?

// before for loop
console.log('before for loop');
for (var i = 0; i < d1["0"].length; i++) {
    console.log(d1["0"][i]);
}

container["0"] = [100, 200, 300];

console.log('after console.log');
console.log(d1);

// after for loop
console.log('after for loop');
for (var i = 0; i < d1["0"].length; i++) {
    console.log(d1["0"][i]); …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome console.log

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

有没有办法在JavaScript中为数组的每个对象添加相同的项目val ="4"?

有没有办法在JavaScript中为数组的每个对象添加相同的项目val ="4"?

让我们说有

var arr = [{"num":"111"},{"ttt":"123","rss":"456"},...];
Run Code Online (Sandbox Code Playgroud)

我想得到

arr2 = [{"num":"111", "val":"4"},{"ttt":"123", "rss":"456", "val":"4"},...];
Run Code Online (Sandbox Code Playgroud)

是否可以在一行中使用.push()数组或类似的东西?

javascript arrays jquery angularjs

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

如何在JavaScript中的两个现有对象之间复制

我有两个相同类型的对象,我想将其中一个的内容复制到另一个。

const Invoice1 = new InvoiceModel(); 

const Invoice2 = new InvoiceModel();
Run Code Online (Sandbox Code Playgroud)

现在为了具有以下内容:Invoice2 = Invoice1

看完之后 :

如何正确克隆JavaScript对象?

我尝试使用以下任何命令,但所有命令都说在运行时未定义invoice2:

 Invoice2 = { ...Invoice1 };  //OR

 Invoice2 = Object.assign({}, Invoice1);  //OR

 Invoice2 = JSON.parse(JSON.stringify(Invoice1));
Run Code Online (Sandbox Code Playgroud)

最后,通过阅读本文(https://medium.com/@Farzad_YZ/3-ways-to-clone-objects-in-javascript-f752d148054d),我使用了此功能来复制对象的内容:

function CopyObject(src, target) {
  for (let prop in src) {
    if (src.hasOwnProperty(prop)) {
      target[prop] = src[prop];
    }
  }
  return target;
}
Run Code Online (Sandbox Code Playgroud)

我想知道除了使用上面的功能以外,还有没有更清洁的方法?

我已经阅读了许多有关此问题的文章,但所有这些文章都创建了一个新对象。

javascript

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