【发布时间】:2018-12-06 10:49:33
【问题描述】:
我正在尝试用相同的标签对相似的对象进行分组。
目前,这是我收到的 JSON。
const sizes = [{
id: [{
value: '2496',
label: 'XS'
}, {
value: '2499',
label: 'S'
}],
type: 'First Size'
}, {
id: [{
value: '2863',
label: 34
}, {
value: '2866',
label: 36
}],
type: 'Shoe Sizes'
}, {
id: [{
value: '3561',
label: 'XS'
}, {
value: '3563',
label: 'S'
}, {
value: '3565',
label: 'L'
}, , {
value: '3567',
label: 'XL'
}]
}, {
id: [{
value: '3523',
label: 34
}, {
value: '2866',
label: 36
}],
type: 'Shoe Sizes'
}]
我想要达到的结果是
const sizes = [{
id: [{
value: '2496,3561',
label: 'XS'
}, {
value: '2499,3563',
label: 'S'
}],
type: 'First Size'
}, {
id: [{
value: '2863,3523',
label: 34
}, {
value: '2866',
label: 36
}],
type: 'Shoe Sizes'
}, {
id: [{
value: '3565',
label: 'L'
}, , {
value: '3567',
label: 'XL'
}]
}, {
id: [{
value: '2866',
label: 37
}],
type: 'Shoe Sizes'
}]
我尝试使用下划线来实现这一点,但我只能按一个标签对其进行分组,而且我需要按任何类型的标签对其进行分组,无论是 XS 还是 36。
我在下面尝试了 reduce,它很接近,但我只需要删除值周围的括号,然后将值转换为字符串。
EX:值:'2493, 2343'
var group_to_values = sizes.reduce(function (obj, item) {
obj[item.label] = obj[item.label] || [];
obj[item.label].push(item.value);
return obj;
}, {});
var groups = Object.keys(group_to_values).map(function (key) {
return {label: key, value: group_to_values[key]};
});
【问题讨论】:
-
实际上有什么区别?那么无类型类型呢?
-
不同之处在于我试图达到的结果有两个XS的值,这是分组的。
-
@anon 你试过了吗?向我们展示您的代码。
-
@Ivan 我已经编辑并做了我尝试过的事情,但只是试图删除值周围的括号
-
为什么想要的结果有四个对象?
标签: javascript arrays sorting object