首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析嵌套javascript数组

解析嵌套javascript数组
EN

Stack Overflow用户
提问于 2019-03-28 00:52:54
回答 3查看 96关注 0票数 2

我有这个数组

代码语言:javascript
复制
  air_content: '',
  compaction_method: 1,
  concrete_cylinders: [
    {
      id: '',
      specimen_name: 'A',
      mould_number: '',
      curing: 1,
      age: 7
    },
    {
      id: '',
      specimen_name: 'A',
      mould_number: '',
      curing: 1,
      age: 7
    },
    {
      id: '',
      specimen_name: 'A',
      mould_number: '',
      curing: 1,
      age: 7
    }
  ]

当我发布数据时,我试图解析它们( formik将它们修改回文本,因此我需要将它们解析为后端的int )

我的文章看起来如下(除了嵌套的对象外,我希望它们也被解析为整数)。

代码语言:javascript
复制
axios.post('http://localhost:8123/samples/concrete', {
  air_content: parseFloat(air_content),
  compaction_method: parseInt(compaction_method),
  concrete_cylinders
});

下面是我所要做的代码的最佳尝试:

代码语言:javascript
复制
   axios.post('http://localhost:8123/samples/concrete', {
      air_content: parseFloat(air_content),
      compaction_method: parseInt(compaction_method),
      concrete_cylinders: {
        [concrete_cylinders.id]: parseInt(concrete_cylinders.id),
        [concrete_cylinders.curing]: parseInt(concrete_cylinders.curing)
      }
    });

谢谢你的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-28 01:01:32

在打电话给axios.post之前,你需要

代码语言:javascript
复制
concrete_cylinders.forEach(x => {
    x.id = parseInt(x.id);
    x.curing = parseInt(c.curing);
});

或者,如果你真的想要的话,你可以像

代码语言:javascript
复制
axios.post('http://localhost:8123/samples/concrete', {
  air_content: parseFloat(air_content),
  compaction_method: parseInt(compaction_method),
  concrete_cylinders: concrete_cylinders.map(x => {
    x.id = parseInt(x.id);
    x.curing = parseInt(c.curing);
    return x;
  });
});
票数 3
EN

Stack Overflow用户

发布于 2019-03-28 01:11:23

下面是一个使用更新的扩展语法的版本

代码语言:javascript
复制
const concrete_cylinders = [
  {
    id: '',
    specimen_name: 'A',
    mould_number: '',
    curing: '1',
    age: '7'
  },
  {
    id: '',
    specimen_name: 'A',
    mould_number: '',
    curing: '1',
    age: '7'
  },
  {
    id: '',
    specimen_name: 'A',
    mould_number: '',
    curing: '1',
    age: '7'
  }
]

const result = concrete_cylinders.map(o => ({
  ...o,
  ...{
    curing: parseInt(o.curing),
    age: parseInt(o.age)
  }
}));

console.log(result);

票数 2
EN

Stack Overflow用户

发布于 2019-03-28 01:15:31

在发布之前,您可以尝试在数组上使用forEach。比如说..。

代码语言:javascript
复制
pojo = {
  air_content: '',
  compaction_method: 1,
  concrete_cylinders: [
    {
      id: '3',
      specimen_name: 'A',
      mould_number: '',
      curing: '1',
      age: 7
    },
    {
      id: '3',
      specimen_name: 'A',
      mould_number: '',
      curing: '1',
      age: 7
    },
    {
      id: '3',
      specimen_name: 'A',
      mould_number: '',
      curing: '1',
      age: 7
    }
  ]
}

pojo.concrete_cylinders.forEach(e => {
  e.id = parseFloat(e.id)
  e.curing = parseInt(e.curing)
//...anything else you want to change before posting
})

然后将对象传递给您的axios.post

代码语言:javascript
复制
axios.post('http://localhost:8123/samples/concrete', pojo);

我相信有一个方法可以用更少的行来完成,但是这应该可以解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55388616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档