简单的JavaScript转换JSON格式

use*_*010 1 javascript json

我有一个json格式,想要转换 从左到右

这是我的剧本.我曾尝试但无法获得正确的结果.请给出一些建议,谢谢和欣赏.

function groupBy() {
var list = [{
        "id": "009",
        "Nm": "Model 1",
        "pid": "adidas"
    },
    {
        "id": "007",
        "Nm": "Model 1",
        "pid": "adidas"
    },
    {
        "id": "006",
        "Nm": "Model 1",
        "pid": "adidas"
    },
    {
        "id": "pm1",
        "Nm": "Model 1",
        "pid": "puma"
    },
    {
        "id": "003",
        "Nm": "Model 1",
        "pid": "adidas"
    },
    {
        "id": "pm5",
        "Nm": "Model 1",
        "pid": "puma"
    },
    {
        "id": "aj1",
        "Nm": "Model 1",
        "pid": "nike"
    },
    {
        "id": "aj2",
        "Nm": "Model 1",
        "pid": "nike"
    }
];
var output = [];
for (var i = 0; i < list.length; i++) {
    if (list[i].pid != undefined) {
        output.push(list[i]);
    }
}
console.log(output);
}
groupBy();
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

一种选择是reduce进入由pids 索引的对象,其值为数组.在每次迭代时,如果数组不存在,则在相应的属性上创建数组,然后推送到该数组:

var list = [
  {"id":"009","Nm":"Model 1","pid":"adidas"},
  {"id":"007","Nm":"Model 1","pid":"adidas"},
  {"id":"006","Nm":"Model 1","pid":"adidas"},
  {"id":"pm1","Nm":"Model 1","pid":"puma"},
  {"id":"003","Nm":"Model 1","pid":"adidas"},
  {"id":"pm5","Nm":"Model 1","pid":"puma"},
  {"id":"aj1","Nm":"Model 1","pid":"nike"},
  {"id":"aj2","Nm":"Model 1","pid":"nike"}
];
console.log(
  list.reduce((a, item) => {
    const { pid } = item;
    if (!a[pid]) a[pid] = [];
    a[pid].push(item);
    return a;
  }, {})
);
Run Code Online (Sandbox Code Playgroud)