合并 JSON 数组中的重复值(最好使用下划线或 lodash)
Merge duplicate value in JSON array (underscore or lodash preferable)
我想合并 JSON 数组的某些对象,这些对象具有特定键的重复值。
我有 json 个这样的数组:
var data=[
{ type:"XO",
logID:"213323",
user:"34324234"
},
{ type:"YO",
logID:"2323323",
user:"1212234"
},
{ type:"XO",
logID:"676323323",
user:"45465412234"
},
,
{ type:"ZO",
logID:"1231434323",
user:"35739434"
}
]
这里我想根据键 'type' 合并 JSON 个对象。所以相同类型的新密钥看起来像这样:
var expectedOutput:[
{
type:XO,
text: [
{
logID:"213323",
user:"34324234"
},
{
logID:"676323323",
user:"45465412234"
}
]
},
{ type:"YO",
text:[
{
logID:"2323323",
user:"1212234"
}
]
},
{
type:"ZO",
text:[
{
logID:"1231434323",
user:"35739434"
}
]
}
]
您可以使用 lodash#groupBy
to group the collection by type
, use lodash#map
to transform each group object format into a group array format. To remove the type
property from the array of text
, we'll use a partailly applied lodash#omit
function using lodash#partial
.
var result = _(data)
.groupBy('type')
.map(function(group, type) {
return {
type: type,
text: _.map(group, _.partial(_.omit, _, 'type'))
};
})
.value();
var data = [{
type: "XO",
logID: "213323",
user: "34324234"
},
{
type: "YO",
logID: "2323323",
user: "1212234"
},
{
type: "XO",
logID: "676323323",
user: "45465412234"
},
{
type: "ZO",
logID: "1231434323",
user: "35739434"
}
];
var result = _(data)
.groupBy('type')
.map(function(group, type) {
return {
type: type,
text: _.map(group, _.partial(_.omit, _, 'type'))
};
})
.value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
我想合并 JSON 数组的某些对象,这些对象具有特定键的重复值。
我有 json 个这样的数组:
var data=[
{ type:"XO",
logID:"213323",
user:"34324234"
},
{ type:"YO",
logID:"2323323",
user:"1212234"
},
{ type:"XO",
logID:"676323323",
user:"45465412234"
},
,
{ type:"ZO",
logID:"1231434323",
user:"35739434"
}
]
这里我想根据键 'type' 合并 JSON 个对象。所以相同类型的新密钥看起来像这样:
var expectedOutput:[
{
type:XO,
text: [
{
logID:"213323",
user:"34324234"
},
{
logID:"676323323",
user:"45465412234"
}
]
},
{ type:"YO",
text:[
{
logID:"2323323",
user:"1212234"
}
]
},
{
type:"ZO",
text:[
{
logID:"1231434323",
user:"35739434"
}
]
}
]
您可以使用 lodash#groupBy
to group the collection by type
, use lodash#map
to transform each group object format into a group array format. To remove the type
property from the array of text
, we'll use a partailly applied lodash#omit
function using lodash#partial
.
var result = _(data)
.groupBy('type')
.map(function(group, type) {
return {
type: type,
text: _.map(group, _.partial(_.omit, _, 'type'))
};
})
.value();
var data = [{
type: "XO",
logID: "213323",
user: "34324234"
},
{
type: "YO",
logID: "2323323",
user: "1212234"
},
{
type: "XO",
logID: "676323323",
user: "45465412234"
},
{
type: "ZO",
logID: "1231434323",
user: "35739434"
}
];
var result = _(data)
.groupBy('type')
.map(function(group, type) {
return {
type: type,
text: _.map(group, _.partial(_.omit, _, 'type'))
};
})
.value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>