【问题标题】:Split array into dynamic groups [closed]将数组拆分为动态组[关闭]
【发布时间】:2020-06-09 01:39:35
【问题描述】:

我正在尝试根据 size 属性将以下数组拆分为块:

[
    { size:6, value:1 },
    { size:6, value:2 },
    { size:12, value:3 },
    { size:6, value:4 },
    { size:6, value:5 }
]

这个想法是将数组分成 2 个组,但如果数组中的一个项目的大小为 6,则该组必须只有 1 个项目。

所以理想情况下,我希望数组在运行拆分函数后如下所示:

[
    [
        { size: 6, value: 1 },
        { size: 6, value: 2 }
    ],
    [
        { size: 12, value: 3 },
    ]
    [
        { size: 6, value: 4 },
        { size: 6, value: 5 }
    ]
]

【问题讨论】:

  • 有还是没有?在您的示例中,如果数组的大小为 6,则块必须有两个项目
  • @NicolaeMaties 是的。我需要一个可以接受数组作为参数并将数组输出到正确分组中的函数。

标签: javascript arrays sorting multidimensional-array


【解决方案1】:

据我了解!!

const chunksArray = (arr, chunkSize) => {
    const groups = [];
    let i;
    for (i = 0; i < arr.length; i += chunkSize) {
        groups.push(arr.slice(i, i + chunkSize));
    }
    return groups;
};

const t = [
    { size:6, value:1 },
    { size:6, value:2 },
    { size:12, value:3 },
    { size:6, value:4 },
    { size:6, value:5 }
];

console.log(chunksArray(t, 2));

更新代码 -

var chunksArray = (arr, chunkSize, ownGroup) => {
    let nArray = [];
    nArray.push(arr.splice(0, chunkSize).reduce((nAr, elem, ind) => {
        if (elem[ownGroup.key] == ownGroup.val) {
            nArray.push([elem]);
        } else {
            nAr.push(elem);
        }
        return nAr;
    }, []));

    if (arr.length) nArray = nArray.concat(chunksArray(arr, chunkSize, ownGroup));
    return nArray;
};

const t = [
    { size:6, value:1 },
    { size:6, value:2 },
    { size:12, value:3 },
    { size:6, value:4 },
    { size:6, value:5 },
    { size:6, value:6 }
];
var ownGroup = {key:'size',val:12};
console.log(chunksArray(t, 2, ownGroup));

【讨论】:

  • 这会将数组分成 2 个一组。我需要将它分成两组,直到它到达 size 属性值为 12 的项目,然后它必须将该项目放入它自己的组中,然后继续对其余部分进行分组。
猜你喜欢
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多