zoukankan      html  css  js  c++  java
  • 前端js如何生成一个对象,并转化为json字符串

    https://www.cnblogs.com/May-day/p/6841958.html

    一,直接上代码

    复制代码
    <script src="../../Content/jquery-2.0.3.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function aa() {
            var json = [];
            var j = {};
            for (var i = 1; i < 5; i++) {
                j.name = "name";
                j.cars = "22";
                j.obj = "457";
                json.push(j);
            }
            var a = JSON.stringify(json);
            alert(a);
        }
    </script>
    <div>
        <input type="button" value="提交" onclick="aa()" />
    </div>
    复制代码

     综上:理解是定一个数组和一个对象,将对象插入到数组,然后装换成JSON字符串的逻辑

    二,以上代码会出现一个问题:当你插入i的值是发现输出的一直都是最后一个对象的JSON

    复制代码
     <script type="text/javascript">
            window.onload = function () {
                var json = [];
                var j = {};
                for (var i = 1; i < 5; i++) {
                    j.name = "name";
                    j.cars = "22";
                    j.obj = i;
                    json.push(j);
                }
                var a = JSON.stringify(json);
                alert(a);
            }
        </script>
    复制代码

    经过JS调试发现,写成这样才是我们想要的结果:(将J的定义写在遍历里面)

    复制代码
        <script type="text/javascript">
            window.onload = function () {
                var json = [];
                for (var i = 1; i < 5; i++) {
                    var j = {};
                    j.name = "name";
                    j.cars = "22";
                    j.obj = i;
                    json.push(j);
                }
                var a = JSON.stringify(json);
                alert(a);
            }
        </script>
    复制代码

     [{"name":"name","cars":"22","obj":1},{"name":"name","cars":"22","obj":2},{"name":"name","cars":"22","obj":3},{"name":"name","cars":"22","obj":4}]

     原因: 在JS定义出来的变量是Object对象,分配的是一块内存空间,你将这个对象插入到一个数组中,也是在数组内开辟一个空间指向这块内存,你在遍历是数组的容量是一直增大,但是都是指向与同一块内存对象,所以他们的值是一样的,而且是这个对象最后修改的那个值,所以最后数组的值一样,将对象在循环里面定义,则是我们想要的结果

  • 相关阅读:
    OKR实施方法——关于思路和流程的思考
    如何制作一份疫情场所分布地图?(附数据和源码)
    经纬度编码方法推荐-plus code简介
    快递到车服务的实现思路和问题思考
    ACC自适应巡航控制系统介绍
    《无人驾驶》-了解无人驾驶最佳读物
    手把手教你制作微信小程序,开源、免费、快速搞定
    2点GPS坐标求方位角
    GPRS 应用详解_GPRSsim800c(转)
    STM32的ADC采样与多通道ADC采样(转)
  • 原文地址:https://www.cnblogs.com/rxbook/p/9635122.html
Copyright © 2011-2022 走看看