将临时变量分配给JSON

时间:2018-02-07 18:41:16

标签: javascript json

我试图将特定JSON的内容复制到另一个JSON并根据我的需要修改临时变量,但原始的JSON也会发生变化。

例如:

>>>df = pd.DataFrame({"a" : [1,2,3], "b" :[4,5,6], "c":[10,11,12]})
>>>print(df)

   a  b   c
0  1  4  10
1  2  5  11
2  3  6  12

>>>df2 = df.melt()
>>>print(df2)

  variable  value
0        a      1
1        a      2
2        a      3
3        b      4
4        b      5
5        b      6
6        c     10
7        c     11
8        c     12

说,现在我正在修改temp,比如:

count = {
    passed : 2,
    failed : 5
} 
console.log(count)   // logs the JSON content
let temp = count;
console.log(temp)   // logs the JSON content

它也改变了计数的传递值。现在,如果我记录计数的JSON,

temp.passed = 0;
console.log(temp);   //{passed : 0, failed : 5}

我希望传递的是2,因为我只修改了传入临时的JSON对象。

我想保持计数相同并仅修改temp。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

首先,that is not JSON, that is an "object literal"。它们是不同的东西。

您需要克隆对象,例如使用destructuring assignment

count = {
  passed: 2,
  failed: 5
}

const temp = { ...count };

temp.passed = 0;

console.dir(temp);
console.dir(count);

或者使用Object.assign()和空对象,由Kenry提出。

答案 1 :(得分:1)

您必须克隆对象以添加更多属性,并且不要更改源。

使用Object.assign()

let temp = Object.assign({}, count);

通过这种方式,您可以在不更改源的情况下添加更多属性。