代码之家  ›  专栏  ›  技术社区  ›  esafwan

从JS对象创建的数组在登录控制台时显示循环对象

  •  0
  • esafwan  · 技术社区  · 8 年前

    我希望创建一个由多个输入创建的对象数组。每次用户按下 Add to Array 按钮它应该向数组中添加一个新对象。但是,当我将数组记录到控制台时,它显示循环引用。

    我的测试代码如下:

    var selected = [];
    
    var name = $(".name").val();
    var id = $(".id").val();
    var data = $(".data").val();
    
    var data = {
      name : $(".name").val(),
      id : $(".id").val(),
      data: $(".data").val()
    }
    $("button").click(function(){    
        selected.push(data);
        console.log(selected);
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
    <input type="text" class="name" value='Some name' />
    <input type="text" class="data" value='some data' />
    <input type="text" class="id" value='12' />
    <p id="demo"></p>
    <button>Add to array</button>
    我想要一个包含我添加的所有值的普通数组,供以后使用。我不确定循环引用是否是我应该得到的结果。

    这是维护对象集合(稍后将发布到服务器)的错误方法吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   ferhado    8 年前

    您只需要在函数中声明var数据,如下面的示例中所示:

    var selected = [];
    
    $("button").click(function() {
      var data = {
        name: $(".name").val(),
        id: $(".id").val(),
        data: $(".data").val()
      }
      selected.push(data);
      console.log(selected);
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
    <input type="text" class="name" value='Some name' />
    <input type="text" class="data" value='some data' />
    <input type="text" class="id" value='12' />
    <p id="demo"></p>
    <button>Add to array</button>