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