【问题标题】:Push data into array of objects using JavaScript使用 JavaScript 将数据推送到对象数组中
【发布时间】:2019-06-14 13:10:18
【问题描述】:

我有一个对象数组,一旦用户填写并单击 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" />

【问题讨论】:

  • 使用list[0].review.push(newData)
  • review[#].push 不是函数。 review.push 是。 review 是一个对象数组。内部对象不是数组。 push()是数组操作
  • 这里的逻辑是什么?如何选择要将新数据添加到哪个评论数组?它总是第一个吗?或者...您是否尝试将新数据推送到所有评论数组(在list 侧的所有对象中)?

标签: javascript jquery arrays


【解决方案1】:

您正试图推入Object。方法 push 不适用于类型 Objectpush 可用于 javascript 中的 Array 类型。试试下面的代码

list[0].review.push(newData)

【讨论】:

    【解决方案2】:

    不需要循环,因为您想将 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" />

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      相关资源
      最近更新 更多