使用JavaScript将数据推入对象数组

时间:2019-06-14 13:10:18

标签: javascript jquery arrays

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

我尝试使用push(),但是得到的是“ list [0] .review [j] .push不是函数”。

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

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" />

2 个答案:

答案 0 :(得分:0)

您正在尝试插入Object。方法push在类型Object上不可用。 push在javascript中的类型为Array上可用。尝试下面的代码

list[0].review.push(newData)

答案 1 :(得分:0)

当您要将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" />