如何在 javascript 中创建 json 对象的副本而不是引用
how to create a copy of json object in javascript instead of a reference
我有 testdata.js 文件,其中 json 测试数据如下:
testdata.js 文件:
module.exports =
{
创建主机:
{
name : "System-001",
description: "Creating System",
}
}
在另一个测试中,我试图用上述测试数据创建一个名为 testcase1 的变量。更改 testcase1 中的 属性 值,更改 testdata.js 文件中的值 json 对象。
it("Create a host", function(){
var testcase1 = testdata.createHost;
testcase1.name="sys-002";
console.log(testcase1.name);
console.log(testdata.createHost.name);
});
回复:
系统-002
系统-002
我的要求是创建一个测试数据的副本而不是创建一个引用。我该怎么做?
您可以使用 for in
循环遍历每个属性并按值分配它们。
var createHost = { name : "System-001", description: "Creating System" }
var test = {};
for (var key in createHost)
test[key] = createHost[key];
test.name = "Test";
console.log(test.name);
console.log(createHost.name);
您可以使用jQuery中的扩展函数克隆对象:
var testCaseClone = jQuery.extend({}, testdata);
没有 "JSON object" 这样的东西(除非你的字面意思是包含 parse
和 stringify
函数的全局对象)。只有 JSON 个字符串。因此,您可以使用简单的 =
运算符复制它们。
var copy_json_string = original_json_string
如果您需要复制一个对象(它是 object,只是 object,而不是 "JSON object"),那里已经有几十个答案,例如:How do I correctly clone a JavaScript object?.
最短路线:
var copied = JSON.parse(JSON.stringify(object));
我有 testdata.js 文件,其中 json 测试数据如下:
testdata.js 文件:
module.exports =
{ 创建主机: {
name : "System-001",
description: "Creating System",
}
}
在另一个测试中,我试图用上述测试数据创建一个名为 testcase1 的变量。更改 testcase1 中的 属性 值,更改 testdata.js 文件中的值 json 对象。
it("Create a host", function(){
var testcase1 = testdata.createHost;
testcase1.name="sys-002";
console.log(testcase1.name);
console.log(testdata.createHost.name);
});
回复: 系统-002 系统-002
我的要求是创建一个测试数据的副本而不是创建一个引用。我该怎么做?
您可以使用 for in
循环遍历每个属性并按值分配它们。
var createHost = { name : "System-001", description: "Creating System" }
var test = {};
for (var key in createHost)
test[key] = createHost[key];
test.name = "Test";
console.log(test.name);
console.log(createHost.name);
您可以使用jQuery中的扩展函数克隆对象:
var testCaseClone = jQuery.extend({}, testdata);
没有 "JSON object" 这样的东西(除非你的字面意思是包含 parse
和 stringify
函数的全局对象)。只有 JSON 个字符串。因此,您可以使用简单的 =
运算符复制它们。
var copy_json_string = original_json_string
如果您需要复制一个对象(它是 object,只是 object,而不是 "JSON object"),那里已经有几十个答案,例如:How do I correctly clone a JavaScript object?.
最短路线:
var copied = JSON.parse(JSON.stringify(object));