我正在从收集中读取文档并存储2个不同的变量。 但每当我从JSON中删除任何键时,它都会影响第一个变量结果。
我想让他们两个人保持独立,以便改变一个人不会反映其他人。
var query = 'SELECT * FROM c where c.id = "XYZ"
var accept = collection.queryDocuments(collection.getSelfLink(), filterQuery,
function (err, documents, responseOptions)
{
if (err) throw new Error("Error" + err.message);
if (documents.length != 1)
throw "Document Not Exist";
else
{
var doc1 = new Object;
var doc2 = new Object;
doc1 = documents[0];
doc2 = documents[0];
var i = doc1.abc[0].pqr;
for(x = 0; x < doc1.abc[0].pqr.length; x++)
{
delete doc1.abc[0].pqr[x];
}
console.log(doc2)
}
这里console.log(doc2)也没有显示我想要的已删除元素。
答案 0 :(得分:0)
doc1.abc[0]
和doc2.abc[0]
代表同一个对象,它们是相同的引用。
有关这意味着什么的更多信息,请参见this。
如果要依赖修改这两个文档,则需要完全分离数据。
这可能是最简单的方法:
var doc1 = documents[0];
var doc2 = JSON.parse(JSON.stringify(doc1));
(资料来源:How to copy JavaScript object to new variable NOT by reference?)