我有一个如下所示的数组和对象:
const myArray = [];
_meta: {
pageContext: {
pageType: "Homepage",
label: "pageContext"
}
}
我希望将包含它的密钥的对象pageContext推送到一个数组中。我怎么做?如果我这样做:
myArray.push(model._meta.pageContext);
我只获得数组中页面上下文的内容。我希望结果如下:
[
pageContext: {
pageType: "Homepage",
label: "pageContext"
}
]
是否有fancypants es6技巧才能做到这一点?
答案 0 :(得分:2)
我希望结果像
之后您所显示的内容无效(嗯,好吧,您可以创建类似的东西,但这通常是一个坏主意*)。但是你可以创建它:
[
{
pageContext: {
pageType: "Homepage",
label: "pageContext"
}
}
]
请注意,该数组包含一个对象,其中包含pageContext
。
如果这是您想要的结果,并且_meta
真的如图所示,只需按_meta
:
myArray.push(model._meta);
示例:
const myArray = [];
const model = {
_meta: {
pageContext: {
pageType: "Homepage",
label: "pageContext"
}
}
};
myArray.push(model._meta);
console.log(myArray);

如果_meta
中包含您不想推送的其他内容,请创建一个新对象:
myArray.push({pageContext: model._meta.pageContext});
示例:
const myArray = [];
const model = {
_meta: {
pageContext: {
pageType: "Homepage",
label: "pageContext"
},
somethingElse: {
weDontWant: "this"
}
}
};
myArray.push({pageContext: model._meta.pageContext});
console.log(myArray);

*如果您确实希望拥有一个具有pageContext
属性的数组,则可以这样做,因为数组是对象:
myArray.pageContext = model._meta.pageContext;
但是大部分时间,如果你认为你想要这样做,你根本不想要一个数组,你只需要一个非数组对象。
答案 1 :(得分:1)
数组可以包含objects
而不包含键,您的预期输出是无效对象
您的数组看起来像
[{
pageContext: {
pageType: "Homepage",
label: "pageContext"
}
}]
做
myArray.push(model._meta);
答案 2 :(得分:0)
但你想要的是无效的JS。你可以获得像
这样的东西[
{
pageContext: {
pageType: "Homepage",
label: "pageContext"
}
}
]
使用
myArray.push(model._meta);
或类似
[
{
name: 'pageContext',
value: {
pageType: "Homepage",
label: "pageContext"
}
}
]
使用
myArray.push({ name: 'pageContext', value: model._meta.pageContext });
答案 3 :(得分:0)
[
{
pageType: "Homepage",
label: "pageContext"
}
]
如果您已经知道每个对象都是pageContext,那么请按
myArray.push(model._meta.pageContext);