1

我需要使用 JSONata 将数组项合并到对象如果我的输入是

{"skus":[
  {
    "a":1,
    "c":3,
    "b":["n"]
  },
  {
    "a":6,
    "c":7,
    "b":["f","h"]
  }]}

我需要如下输出。我需要它在同一个对象内扩展

{"skus":[
  {
    "a":1,
    "c":3,
    "b":"n"
  },
  {
    "a":6,
    "c":7,
    "b":"f"
  },
  {
    "a":6,
    "c":7,
    "b":"h"
  }]}

4

1 回答 1

0

您可以使用reduce实现上述结果

let json = {"skus":[
  {
    "a":1,
    "c":3,
    "b":["n"]
  },
  {
    "a":6,
    "c":7,
    "b":["f","h"]
  }]};



json.skus = json.skus.reduce((acc, item) => {
  if(typeof item.b === "object"){
    let a = item.b.map(i =>{
      let out = {...item};
      out.b = i;
      return out; 
    })
    return acc.concat(a);
  }else{
    return acc.concat(item);
  }
},[]);

console.log(json);

于 2022-02-24T12:09:26.883 回答