gpt4 book ai didi

javascript - 对 Javascript 数组内的项目进行分组

转载 作者:行者123 更新时间:2023-11-28 11:11:31 26 4
gpt4 key购买 nike

我有以下数据结构,我尝试按其父级别对内部部分进行分组。

  const arr = [
{
level: '1.1',
name: 'group title 1',
},
{
level: '1.1.1',
name: 'group section 1.1.1',
},
{
level: '1.1.2',
name: 'group section 1.1.2',
},
{
level: '1.1.3',
name: 'group section 1.1.3',
},
{
level: '1.2',
name: 'group title 2',
},
{
level: '1.2.1',
name: 'group section 1.1.1',
},
{
level: '1.3',
name: 'group title 3',
},
{
level: '1.3.1',
name: 'group section 1.1.1',
},
{
level: '1.3.2',
name: 'group section 1.1.2',
},
{
level: '1.4',
name: 'group title 4',
},
{
level: '1.4.1',
name: 'group section 1.4.1',
},
{
level: '1.4.2',
name: 'group section 1.4.2',
},
{
level: '1.4.3',
name: 'group section 1.4.3',
},
];

我一直在尝试将结构更改为以下对象(对部分进行分组)。该对象具有父级的值作为属性和部分的数组。

  const obj = {
'1.1': [
{
level: '1.1.1',
name: 'group section 1.1.1',
},
{
level: '1.1.2',
name: 'group section 1.1.2',
},
{
level: '1.1.3',
name: 'group section 1.1.3',
},
],
'1.2': [
{
level: '1.2',
name: 'group title 2',
},
{
level: '1.2.1',
name: 'group section 1.1.1',
},
],
'1.3': [
{
level: '1.3',
name: 'group title 3',
},
{
level: '1.3.1',
name: 'group section 1.1.1',
},
{
level: '1.3.2',
name: 'group section 1.1.2',
},
],
'1.4': [
{
level: '1.4.1',
name: 'group section 1.4.1',
},
{
level: '1.4.2',
name: 'group section 1.4.2',
},
{
level: '1.4.3',
name: 'group section 1.4.3',
},
],
};

我的尝试没有成功。对于如何将结构更改为上述结构,我将不胜感激。

最佳答案

Array.prototype.reduce()可用于从数组构造对象

String.prototype.match()可用于检测字符串中的模式。

/\d+\.\d+/匹配第一次出现的一个或多个数字,后跟一个句号,后跟一个或多个数字

// Input.
const input = [{level: '1.1',name: 'group title 1',},{level: '1.1.1',name: 'group section 1.1.1',},{level: '1.1.2',name: 'group section 1.1.2',},{level: '1.1.3',name: 'group section 1.1.3',},{level: '1.2',name: 'group title 2',},{level: '1.2.1',name: 'group section 1.1.1',},{level: '1.3',name: 'group title 3',},{level: '1.3.1',name: 'group section 1.1.1',},{level: '1.3.2',name: 'group section 1.1.2',},{level: '1.4',name: 'group title 4',},{level: '1.4.1',name: 'group section 1.4.1',},{level: '1.4.2',name: 'group section 1.4.2',},{level: '1.4.3',name: 'group section 1.4.3',},]

// Group.
const group = (array) => array.reduce((o, x) => {
const key = x.level.match(/\d+\.\d+/)
if (o[key]) o[key].push(x)
else o[key] = [x]
return o
}, {})

// Output.
const output = group(input)

// Proof.
console.log(output)

关于javascript - 对 Javascript 数组内的项目进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49628164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com