有没有一种方法可以从JSON中删除但保留其内容?

时间:2020-08-28 16:42:58

标签: javascript arrays json object

我有一个这样的JSon:

[
  {
    "order_number": "",
    "products": [
      {
        "line_id": "" ,
        "cod_anf": "",
        "static_field_2": "",
        "nome_armazem": "",
        "cod_armazem": "",
        "gln": "",
        "sku_ah": "",
        "name": "",
        "qty": "",
        "_regular_price": "",
        "_sale_price": "",
        "line_total": "",
        "desconto": "",
        "pva": "",
        "category": "",
        "localidade": " ",
        "codigo_ah": " ",
        "Part of": ""
      },
      {
        "line_id": "",
        "cod_anf": "",
        "static_field_2": "",
        "nome_armazem": "",
      }
   ],

  {
    "order_number": "",
    "products": [
      {
        "line_id": 1,
        "cod_anf": "",
        "static_field_2": "",

我需要删除“产品”,但要保留其内容。

所以输出应该是这样的:

有可能吗?我已经尝试过,但无法正常工作。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用嵌套地图,散布运算符和如下的flat函数。

const json = [{
    "order_number": "2",
    "products": [{
        "line_id": "",
        "cod_anf": "",
        "static_field_2": "",
        "nome_armazem": "",
        "cod_armazem": "",
        "gln": "",
        "sku_ah": "",
        "name": "",
        "qty": "",
        "_regular_price": "",
        "_sale_price": "",
        "line_total": "",
        "desconto": "",
        "pva": "",
        "category": "",
        "localidade": " ",
        "codigo_ah": " ",
        "Part of": ""
      },
      {
        "line_id": "",
        "cod_anf": "",
        "static_field_2": "",
        "nome_armazem": "",
      }
    ]
  },

  {
    "order_number": "1",
    "products": [{
        "line_id": 1,
        "cod_anf": "",
        "static_field_2": "",
      }

    ]
  }
];

const flattened = json.map(r => [...r.products.map(q =>
    ({
      order_number: r.order_number,
      ...q
    })
  )])
  .flat(1);
console.log(flattened);

答案 1 :(得分:0)

尝试一下,为数据分配json

let obj = [];

data.forEach(order =>{ 
  order.products.forEach(product => {
    obj.push({
      ...product,
      order_number: order.order_number
    })
  })
})