按其不同的ID分组项目数组

Yam*_*ine 6 javascript algorithm json push arraylist

我如何通过衬衫尺寸组织重新安排我的阵列:

[
  { shirt_id: 1, size: "small" },
  { shirt_id: 1, size: "medium" },
  { shirt_id: 1, size: "large" },
  { shirt_id: 2, size: "medium" },
  { shirt_id: 3, size: "large" }
];
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[
  [1, { size: "small" }, { size: "medium" }, { size: "large" }],
  [2, { size: "medium" }],
  [3, { size: "large" }]
];
Run Code Online (Sandbox Code Playgroud)

xia*_*glu 2

尝试这个:

let data = [{ shirt_id: 1, size: 'small' }, { shirt_id: 1, size: 'small' },
    { shirt_id: 1, size: 'medium' },
    { shirt_id: 1, size: 'large' },
    { shirt_id: 2, size: 'medium' },
    { shirt_id: 3, size: 'large' }
];

let result = data.reduce(function(result, obj) {
    let idPos = result.map(v => v[0]).indexOf(obj.shirt_id);

    if (idPos > -1) {
        let sizeArr = result[idPos].slice(1).map(obj => obj.size);
        
        if (sizeArr.indexOf(obj.size) < 0) {
            result[idPos].push({ 'size': obj.size });
        }
    } else {
        result.push([obj.shirt_id, { 'size': obj.size }]);
    }

    return result;
}, []);

console.log(result);
Run Code Online (Sandbox Code Playgroud)