我想将Json保存为两个变量,以便我可以操作一个变量,并在需要恢复并将数据重置为原始数据时保存原始数据。
Json有4件物品。我有两个变量,它们最初共享相同的数据,我可以看到它们在控制台中工作。然而,当我拼接“当前”var时,“原始”变量也会以某种方式拼接。我只想拼接,弹出和推送当前变量。
我的目标是拥有两个对象并且只能操纵一个对象。我不能使用cookie或服务器。
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
<script type="text/javascript">
var jsonOriginal;//used for the original json object
var jsonCurrent;//used for the filtered json object that gets manipulated
$.ajax({
url: "sources/json.txt",
dataType: 'json',
success: (function(json)
{
//save the JSON into two variables for later use
jsonOriginal = json;
jsonCurrent= json;
doSomething();
})
});
function doSomething(){
console.log(jsonOriginal);//has 4 items
console.log(jsonCurrent);//has 4 items
//Splice ONLY CURRENT
jsonCurrent.items.splice(2, 3);//remove 2 items from jsonCurrent
console.log(jsonOriginal);//has 2 items -- WHAT????
console.log(jsonCurrent);//has 2 items as expected
//reset Current to the Original
jsonCurrent=jsonOriginal;//should go back to the 4 items
}
</script>
答案 0 :(得分:1)
您需要复制JSON,否则jsonOriginal
和jsonCurrent
只是对同一对象的引用。使用
var jsonOriginal = jQuery.extend(true, {}, json);
而不是
jsonOriginal = json;
当你想要它时,使用相同的方法将jsonOriginal复制回来可能是一个好主意。