将对象推入对象数组

时间:2019-03-04 11:16:39

标签: javascript

我想将检索到的结果(内联字符串结果)推送到我的数组对象项中

这是我的代码:

  arrayObject.push({ type: "type", item: itemArray });

  arrayObject.forEach((elementItem) => {
    global.forEach((element) => {
      const { items } = element;
      for (const item in items) {
        const title = items[item].title;
        elementItem.item.push({ title });
      }
    });
  });

这是我从全局,项和标题中检索到的json文件

  global: [
    {
      items: {
        xxx: {
          title: 'result1',
        }
      },
    }
 ]

我想要的结果是这样的:

[ { type: 'xxx', item: [ {name: result1 } ] } ]

1 个答案:

答案 0 :(得分:0)

在这里,我使用了reduce和object.values来产生预期的结果。

  

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

     

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/values

     

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

const global = [{
    way: 'type1',
    items: {
      get: {
        title: 'result1',
      },
      post: {
        title: 'result2',
      },
      put: {
        title: 'result3',
      },
    },
  },
  {
    way: 'type2',
    items: {
      get: {
        title: 'test1',
      },
      post: {
        title: 'test2',
      },
      put: {
        title: 'test3',
      },
    },
  },
]

function mapJsonToTypes(arr) {
  const typeAndTitles = (acc, {items, way: type}) => {
    return [...acc, {type, item: getTitlesFromItems(items)}]
  }

  return arr.reduce(typeAndTitles, []);
}

function getTitlesFromItems(items = {}) {
  return Object.values(items).map(({ title }) => title)
}



console.log(mapJsonToTypes(global));