将包括键的对象推入数组

时间:2017-05-15 12:53:22

标签: javascript ecmascript-6

我有一个如下所示的数组和对象:

const myArray = [];

_meta: {
    pageContext: {
        pageType: "Homepage",
        label: "pageContext"
    }
}

我希望将包含它的密钥的对象pageContext推送到一个数组中。我怎么做?如果我这样做:

myArray.push(model._meta.pageContext);

我只获得数组中页面上下文的内容。我希望结果如下:

[
    pageContext: {
        pageType: "Homepage",
        label: "pageContext"
    }
]

是否有fancypants es6技巧才能做到这一点?

4 个答案:

答案 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);