【问题标题】:pushing an object into an array of objects将一个对象推入对象数组
【发布时间】:2019-03-04 11:16:39
【问题描述】:

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

这是我的代码:

  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 } ] } ]

【问题讨论】:

  • 什么是全局?什么是集合对象?
  • @JosefKatič 相同的结果
  • 你的代码没有意义,你没有提供一切
  • 请提供。所以我们知道发生了什么你不应该需要 3 个嵌套循环来实现你想要的
  • @JoeWarner 我刚刚更新了我的问题

标签: javascript


【解决方案1】:

在这里,我使用了 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));

【讨论】:

  • 真棒,如果它有帮助的话 :) 祝你有美好的一天。
猜你喜欢
  • 2020-02-08
  • 2018-01-20
  • 2020-12-19
  • 2017-12-05
  • 2016-05-09
  • 2023-03-29
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多