【发布时间】: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