如何使用下划线将行项目合并到组中?
How to merge in row items to groups by using underscores?
我有一个对象列表:
var list = [
{owner_email: "maxim", value: "v1"},
{owner_email: "maxim", value: "v2"},
{owner_email: "vlad", value: "v3"},
{owner_email: "maxim", value: "v4"},
{owner_email: "bob", value: "v5"},
{owner_email: "bob", value: "v6"},
{owner_email: "bob", value: "v7"},
{owner_email: "vlad", value: "v8"},
{owner_email: "maxim", value: "v9"},
{owner_email: "maxim", value: "v10"},
{owner_email: "bob", value: "v11"}
];
我想使用 underscores
将行项目合并到组中。
所以输出应该是这样的:
output: [
{owner_email: "maxim", values: ["v1", "v2"]},
{owner_email: "vlad", values: ["v3"]},
{owner_email: "maxim", values: ["v4"]},
{owner_email: "bob", values: ["v5", "v6", "v7"]},
{owner_email: "vlad", values: ["v8"]},
{owner_email: "maxim", values: ["v9", "v10"]},
{owner_email: "bob", values: ["v11"]}
]
如您所见,例如,在 list
中,第一个两项电子邮件引用 maxim
因此我将第一行和第二行分组为:{owner_email: "maxim", values: ["v1", "v2"]},
.
如何让它发挥作用?
到目前为止我写的是:
$scope.result = [];
for(var i=0; i<list.length; i++){
if(i === 0){
$scope.result.push({
owner_email: list[i].owner_email,
values: [list[i].value]
});
}
else{
var item = list[i];
var oldItem = _.findWhere($scope.result, {owner_email:item.owner_email});
if(!oldItem ){
$scope.result.push({
owner_email: item.owner_email,
values: [item.value]
});
}
else{
console.log(oldItem);
angular.forEach($scope.result, function(_r){
if(_r.owner_email === oldItem.owner_email){
_r.values.push(item.value);
}
else{
row = false;
}
});
}
}// for
这是一个只遍历列表并跟踪当前项目的解决方案:
var output = [];
var current = { owner_email: null };
_.each( list, function(item){
if( item.owner_email != current.owner_email){
current = { owner_email : item.owner_email, values: [item.value]};
output.push(current);
}
else {
current.values.push(item.value);
}
});
我有一个对象列表:
var list = [
{owner_email: "maxim", value: "v1"},
{owner_email: "maxim", value: "v2"},
{owner_email: "vlad", value: "v3"},
{owner_email: "maxim", value: "v4"},
{owner_email: "bob", value: "v5"},
{owner_email: "bob", value: "v6"},
{owner_email: "bob", value: "v7"},
{owner_email: "vlad", value: "v8"},
{owner_email: "maxim", value: "v9"},
{owner_email: "maxim", value: "v10"},
{owner_email: "bob", value: "v11"}
];
我想使用 underscores
将行项目合并到组中。
所以输出应该是这样的:
output: [
{owner_email: "maxim", values: ["v1", "v2"]},
{owner_email: "vlad", values: ["v3"]},
{owner_email: "maxim", values: ["v4"]},
{owner_email: "bob", values: ["v5", "v6", "v7"]},
{owner_email: "vlad", values: ["v8"]},
{owner_email: "maxim", values: ["v9", "v10"]},
{owner_email: "bob", values: ["v11"]}
]
如您所见,例如,在 list
中,第一个两项电子邮件引用 maxim
因此我将第一行和第二行分组为:{owner_email: "maxim", values: ["v1", "v2"]},
.
如何让它发挥作用?
到目前为止我写的是:
$scope.result = [];
for(var i=0; i<list.length; i++){
if(i === 0){
$scope.result.push({
owner_email: list[i].owner_email,
values: [list[i].value]
});
}
else{
var item = list[i];
var oldItem = _.findWhere($scope.result, {owner_email:item.owner_email});
if(!oldItem ){
$scope.result.push({
owner_email: item.owner_email,
values: [item.value]
});
}
else{
console.log(oldItem);
angular.forEach($scope.result, function(_r){
if(_r.owner_email === oldItem.owner_email){
_r.values.push(item.value);
}
else{
row = false;
}
});
}
}// for
这是一个只遍历列表并跟踪当前项目的解决方案:
var output = [];
var current = { owner_email: null };
_.each( list, function(item){
if( item.owner_email != current.owner_email){
current = { owner_email : item.owner_email, values: [item.value]};
output.push(current);
}
else {
current.values.push(item.value);
}
});