JS:如何提取嵌套的对象字符串?

时间:2017-12-09 02:15:26

标签: javascript arrays

我得到了一个包含以下数据结构的数组:

[
  { 
    _id: 'dgPMHw3ivRSp3wyWe',
    content: { 
      en: [{ content: 'foo', extended: 'bar' }, {...}],
      it: [{ content: 'any', extended: 'thing' }, {...}]
    },
    order: 1,
    parent: 'Dn59y87PGhkJXpaiZ'
  },
  {...}
]

我需要通过选择特定语言的第一个元素来修改此数组以仅获取content的字符串值。

因此对于英语而言,结果应为:

[
  { 
    _id: 'dgPMHw3ivRSp3wyWe',
    content: 'foo',
    extended: bar,
    order: 1,
    parent: 'Dn59y87PGhkJXpaiZ'
  }
]

我知道我可以用

获取字符串
const language = 'en'
array.forEach(doc => {
  console.log(doc.content[language][0].content)
  console.log(doc.content[language][0].extended)
})

但是如何更换它以获得我的结果?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

  let result = data.map(e => ({
        ...e, 
        content: e.content[language].content,
        extended: e.content[language].extended
  }));

答案 1 :(得分:3)

以下是无需列出每个属性的方法:

var array = [{
  _id: 'dgPMHw3ivRSp3wyWe',
  "content": {
    en: {
      content: 'foo',
      extended: 'bar'
    },
    it: {
      content: 'any',
      extended: 'thing'
    }
  },
  order: 1,
  parent: 'Dn59y87PGhkJXpaiZ'
}];

const language = "en";
array = array.map(doc => {
  doc = Object.assign(doc, doc.content[language]);
  return doc;
});
console.log(array);