Javascript 如何将一个JSON对象设置为父对象中的另一个JSON对象';s声明
我对javascript和json不熟悉,对一些代码也不熟悉 这是我的JSON对象的格式Javascript 如何将一个JSON对象设置为父对象中的另一个JSON对象';s声明,javascript,json,facebook-messenger,Javascript,Json,Facebook Messenger,我对javascript和json不熟悉,对一些代码也不熟悉 这是我的JSON对象的格式 messageData = { "attachment": { "type": "template", "payload": { "template_type": "generic", elements: [{ title: "titleOne",
messageData = {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
elements: [{
title: "titleOne",
subtitle: "subtitleOne"
}, {
title: "titleTwo",
subtitle: "subtitleTwo"
}]
}
}
}
我希望通过循环将一个对象设置为一个数组,该数组包含更多的title和subtitle对象,而不是将每个title和subtitle对象单独添加到元素中。假设我有对象标题:
titles = {} //100 objects with different titles and subtitles.
有没有一种方法可以实现如下所示的逻辑
messageData = {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
elements = titles
}
}
}
正确格式化所有内容?谢谢你的帮助 您有一个变量
titles
,它有一个分配给它的对象数组。比如:
var titles = [{...}, {...}, ...];
稍后,您需要将此数组(当前分配给变量titles
)分配给对象的属性(在本例中为elements
):
这将是一个足够的答案,但是现在让我们后退一小步:在JavaScript中,几乎所有的东西都是一个对象(我在这里简化了一点,例如,字符串不是对象,但是我邀请你自己去发现更多)。但是是的,数组是一个对象,一开始听起来很混乱
要知道的另一件事是,在javascript中,对象是通过引用分配的。这意味着,如果修改原始的标题
数组,那么元素
数组也将被修改。它们只是指向同一个物体的两个名字
在您的特定情况下,此细节可能无关紧要,但如果要将标题
和元素
的生命周期分开,则需要克隆原始数组,然后才能再次分配它。最快的方法是通过JSON转换:
var titles_0 = JSON.parse(JSON.stringify(titles));
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements: titles_0
}
}
}
您有一个变量
titles
,它有一个分配给它的对象数组。比如:
var titles = [{...}, {...}, ...];
稍后,您需要将此数组(当前分配给变量titles
)分配给对象的属性(在本例中为elements
):
这将是一个足够的答案,但是现在让我们后退一小步:在JavaScript中,几乎所有的东西都是一个对象(我在这里简化了一点,例如,字符串不是对象,但是我邀请你自己去发现更多)。但是是的,数组是一个对象,一开始听起来很混乱
要知道的另一件事是,在javascript中,对象是通过引用分配的。这意味着,如果修改原始的标题
数组,那么元素
数组也将被修改。它们只是指向同一个物体的两个名字
在您的特定情况下,此细节可能无关紧要,但如果要将标题
和元素
的生命周期分开,则需要克隆原始数组,然后才能再次分配它。最快的方法是通过JSON转换:
var titles_0 = JSON.parse(JSON.stringify(titles));
var messageData = {
attachment: {
type: "template",
payload: {
template_type: "generic",
elements: titles_0
}
}
}
你能解释一下你的
标题对象/数组是什么样子的吗?您不能将标题
分配给元素
?您是否尝试复制数组,但使用相同的{title,subtitle}
对象?还是需要克隆整个结构?@mjsarfatti Titles是包含title和subtitle对象的多个对象的数组。是的,我就是这么想的。但我不知道如何分配它。它像“elements”=titles那样简单吗?@nrabinowitz我想复制具有相同{title,subtitle}结构的数组,并将其设置为等于“elements”,而不是逐个手动设置标题的每个索引,那么您编写的已经是您的答案:)elements:titles
。Ps:在这种情况下,不需要双引号引用属性名称。你能澄清一下你的标题对象/数组是什么样子吗?您不能将标题
分配给元素
?您是否尝试复制数组,但使用相同的{title,subtitle}
对象?还是需要克隆整个结构?@mjsarfatti Titles是包含title和subtitle对象的多个对象的数组。是的,我就是这么想的。但我不知道如何分配它。它像“elements”=titles那样简单吗?@nrabinowitz我想复制具有相同{title,subtitle}结构的数组,并将其设置为等于“elements”,而不是逐个手动设置标题的每个索引,那么您编写的已经是您的答案:)elements:titles
。注:在这种情况下,不需要重复引用属性名称。谢谢您的详细回答!谢谢你的详细回答!