首页 > 解决方案 > 使用 JavaScript 将数据推送到对象数组中

问题描述

我有一个对象数组,一旦用户填写并单击带有 id: 的按钮'add',我想将此数据推送到第一个 master.review 中。

我试过了,push()但我得到'list[0].review[j].push is not a function'。

我做了一些研究,发现我应该这样做:

list[0].review[j] = newData

但即使是这个也没有工作。另外,我想在用户想要添加东西的时候添加数据。

let list = [

  {
    master: "Leo",
    review: [{
        name: 'Bob',
        text: 'good'
      },
      {
        name: 'Elly',
        text: 'ok ok'
      },

    ]

  },
  {
    master: "Emily",
    review: [{
        name: 'Greg',
        text: 'omg!'
      },
      {
        name: 'Joe',
        text: 'SO so..'
      },

    ]

  },
]

$('#add').on('click', function() {

  let name = document.getElementById('name').value;
  let text = document.getElementById('text').value;

  let newData = [{
    name: name,
    text: text,
  }]


  for (let i = 0; i < list.length; i++) {
    for (let j = 0; j < list[i].review.length; j++) {
      list[0].review[j].push(newData)
      console.log(list)
    }

  }

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="name" placeholder="Your Name" required/>
<input type="text" id="text" placeholder="Your Name" required/>
<input type="button" id="add" />

标签: javascriptjqueryarrays

解决方案


不需要循环,因为您想将 newData 对象推送到list[0]. 为了推入数组使用push功能 -list[0].review.push(newData);

let list = [

  {
    master: "Leo",
    review: [{
        name: 'Bob',
        text: 'good'
      },
      {
        name: 'Elly',
        text: 'ok ok'
      },
    ]
  },
  {
    master: "Emily",
    review: [{
        name: 'Greg',
        text: 'omg!'
      },
      {
        name: 'Joe',
        text: 'SO so..'
      },
    ]
  },
]

$('#add').on('click', function() {
  let name = document.getElementById('name').value;
  let text = document.getElementById('text').value;

  let newData = {
    name: name,
    text: text,
  };

  list[0].review.push(newData);
  console.log(list[0].review);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="name" placeholder="Your Name" required/>
<input type="text" id="text" placeholder="Your Name" required/>
<input type="button" id="add" value= "add" />


推荐阅读