数组未被推送为新索引,而是作为新数组推送

问题描述 投票:-2回答:2

我的对象包含以下格式:

[
    { },
    { }
]

但是我编写代码的方式,它将其添加为,

[
    [
        { }
    ],
    [
        { }
    ]
]

不知道发生了什么,这是我的代码:

var commentArray = [];

commentArray.push({
    'text': comment,
    'user': vm.user
});

reference.reference.comments.push(commentArray);

像这样的东西有效:

reference.reference.comments.push({
    'text': comment,
    'user': vm.user
});

但我想推commentArray

javascript vue.js
2个回答
1
投票

让我们看看我能否向你说清楚:

var commentArray = []; 
// here you are creating an empty array called commentArray 

commentArray.push({
    'text': comment,
    'user': vm.user
}); 
// Here you define an object, with 2 properties (text and user) 
// and push it to commentArray you created so 
// commentArray = [{'text': comment, 'user': vm.user}];

reference.reference.comments.push(commentArray);
/// here you push an array (commentArray) into another array (comments)
// so reference.reference.comments will be [[{'text': comment, 'user': vm.user}]];

我马上做一个工作的例子。

var comments = [];
var commentArray = [];

commentArray.push({
    'text': 'comment',
    'user': 'someuser'
});
console.log('comments:', comments);
console.log('commentArray:', commentArray);

comments.push(commentArray);
console.log('comments:', comments);
console.log('commentArray:', commentArray);

所以你不应该创建一个中间数组。您应该只创建对象。像这样:

var comment = {
    'text': comment,
    'user': vm.user
};

reference.reference.comments.push(comment);

或更直接地像这样:

reference.reference.comments.push({
    'text': comment,
    'user': vm.user
});

0
投票

试试这个,你想把一个注释推送到你的注释数组,而不是数组到数组中。

var comment = {
    'text': comment,
    'user': vm.user
};

reference.reference.comments.push(comment);
© www.soinside.com 2019 - 2024. All rights reserved.