如何将更改的值存储到JavaScript对象中?

如何将更改的值存储到JavaScript对象中?,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我有一个JS对象,它存储在一个名为garage.JS的文件中: var myObject = { "cars": [ { "type": "mustang", "body": { "length": 10.7, "width": 5.8, "color" : "#fff" } }, { "type": "corvette",

我有一个JS对象,它存储在一个名为garage.JS的文件中:

var myObject = {
 "cars": [
       {
        "type": "mustang",
        "body": {
          "length": 10.7,
          "width": 5.8,
          "color" : "#fff"
          }
        },
       {
        "type": "corvette",
        "body": {
          "length": 11.9,
          "width": 5.6,
          "color": "#000"
         }
   }]
};
当我在html中的JS函数中更改宽度时,如下所示:

myObject.cars[0].body.width = 6
console.log(myObject.cars[0].body.width = 6)
然后检查变量以查看值是否已更新,如下所示:

myObject.cars[0].body.width = 6
console.log(myObject.cars[0].body.width = 6)
控制台打印6。。。但它不会更改garage.js中存储的对象中的值。。。(我该怎么做?)

该值似乎在本地表示,但我需要它将更新后的值实际写回garage.js文件,以便永久存储,这样当我在浏览器中刷新html时,新值6将替换myObject对象中的旧值5.8


我需要使用JSON.stringify和JSON.parse吗。。。还是比这简单得多?

您可以使用localStorage轻松保存状态。 它看起来像这样:

  • localStorage.setItem(“宽度”,“6”)
    设置键、值对

  • myObject.cars[0].body.width=localStorage[“width”]
    使的值等于localStorage值

现在,每次打开网页时,该值应为6


或者,您也可以使用数据库来存储和检索值。

您的JSON文件存储在服务器上,而不是浏览器(localStorage)上,我猜

由于无法使用浏览器Javascript写入存储在服务器上的文件,因此可能需要后端解决方案。如果仍要使用Javascript编码,请使用加载.json文件,编辑它们并直接将更改应用于文件


如果您想了解更多详细信息,可以对此条目进行评论。

假设您谈论的是一个非常传统的网页,您的HTML中有如下内容:

<script src="garage.js"></script>
<script>
    myObject.cars[0].body.width = 6;
    console.log(myObject.cars[0].body.width);
</script>

您必须创建一个服务器端处理程序来实际编写JSON文件。如何做到这一点取决于您想要使用的服务器端语言。

出于安全原因,您不能使用javascript写入文件。
JSON.stringify
是一个更大答案中的简单部分,它将涉及服务器端的一些内容,包括接受数据并将其写入磁盘等。您是否使用任何类型的服务器端语言,或者只是在本地开发所有内容?您必须将其写入文件。所有javascript状态都保存在内存中。如果在客户端发生这种情况,则必须将此数据发回服务器,并告诉服务器重写该文件。当你想改变一些东西的时候,你可能想使用数据库而不是重写文件不,我不是(不能)使用数据库,只是一个保存JS对象的文件,并且没有涉及其他服务器端语言或框架。。。这只是一个抽象的学习练习,涉及到一个更复杂的面试问题,我必须尽快完成,而不是为了实际的申请。是的,我正在本地开发所有东西……我们是在谈论基于浏览器的JavaScript、节点还是其他环境?假设它是基于浏览器的,您希望将文件保存在本地还是服务器上?我只能在使用localStorage.setItem的函数中访问localStorage吗?当我在使用localStorage.setItem的函数中执行警报语句时(例如警报(localStorage[I+“length”]);它显示我设置的长度,但如果我从另一个函数调用它,它显示“undefined”…
localStorage
是全局的,您可以从任何函数访问它,它与
alert
一样驻留在窗口中。