簡體   English   中英

使用對象分配添加鍵/值對失敗

[英]Adding key/value pair fails with Object assign

我有一個對象,我存儲在本地存儲中。 我想檢索對象並向其添加一個鍵/值項。 這是代碼

 var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');

var newdata = JSON.parse(retrievedObject);
var obj2 = {"four":"4"};
Object.assign(newdata, obj2);

$.each(JSON.parse(retrievedObject), function (index, value) {
  console.log(index+"  "+value);
});

新項目未添加到testObject 如何將項目添加到現有對象?

你成功地改變newdata但你不使用它。 而是再次調用JSON.parse(retrievedObject)

 var testObject = { 'one': 1, 'two': 2, 'three': 3 }; // Put the object into storage // Just use a variable because we cant use localstorage on snippet var storage = JSON.stringify(testObject); // Retrieve the object from storage var retrievedObject = storage; var newdata = JSON.parse(retrievedObject); var obj2 = {"four":"4"}; Object.assign(newdata, obj2); $.each(newdata, function (index, value) { console.log(index+" "+value); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

retrievedObject是一個字符串。 您解析字符串,修改生成的對象( newdata得到修改)。 您不應該期望更改初始字符串。

要更新localStorage,只需執行以下操作:

localStorage.setItem('testObject', JSON.stringify(newdata));

請注意,在該操作之后, retrievedObject仍然是{ 'one': 1, 'two': 2, 'three': 3 }的字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM