将线条字符串推送到对象数组

问题描述 投票:3回答:1

我想将检索到的数据推送到一个数组中,但它只是推入第一个对象。

const arr = [{ name: 'name1', item: [] }, { name: 'name2', item: [] }];
routes.forEach((elementRoute) => {
  const { methods } = elementRoute;
  for (const m in methods) {
    let { title } = methods[m];
    arr[0].item.push({
      name: title,
      request: { method: m,},
    });
  }
});

我的路由数组是这样的:

[
  {
    methods: {
      get: {
        title: 'get users',
      },
    },
  }
];

它只会推入item数组的第一个对象。这是我真正想要获得的结果:

[
  {
    "name": "name1",
    "item": [
      { "name": "get users", "request": { "method": "get" } } }
    ]
  },
  {
    "name": "name2",
    "item": [
      { "name": "get users", "request": { "method": "get" } } }
    ]
  }
]
javascript
1个回答
2
投票

您需要迭代arr以获取所有项目。

const 
    arr = [{ name: 'name1', item: [] }, { name: 'name2', item: [] }],
    routes = [{ methods: { get: { title: 'get users' } } }, { methods: { get: { title: 'get user id' }, delete: {} } }, ];

arr.forEach(({ item }) =>
    routes.forEach(({ methods }) => {
        for (const method in methods) {
            let { title: name = 'Not specified' } = methods[method];
            item.push({ name, request: { method } });
        }
    })
);

console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }
© www.soinside.com 2019 - 2024. All rights reserved.