任何人都可以告诉我如何将计数放在角度JSON数组中的重复值:
我的实际数组如下:
$scope.datas.resultsOrder =['Data1','Data2','Data3','Data3','Data4','Data4'];
上面的数组Data3
中的和Data4
重复两次,所以我需要它在该数组中以Data3_1, Data3_2, Data4_1, Data4_2
顺序出现,如下所示:
$scope.datas.resultsOrder =['Data1','Data2','Data3_1',
'Data3_2','Data4_1','Data4_2'];
该数组中的值还有动态值和不是静态
有人可以告诉我一些解决方案吗?
答案 0 :(得分:1)
你可以这样做:
function transform(arr) {
var c = {};
for (var i = 0; i < arr.length; i++) {
var ar = arr[i];
if(! (ar in c) ) {
c[ar] = 0;
}
c[ar]++;
}
var res = []
;
for(var d in c) {
if(c.hasOwnProperty(d)) {
var l = c[d]
;
if(l === 1) {
res.push(d);
continue;
}
for(var i = 0; i < l; i++) {
res.push(d + '_' + (i + 1));
}
}
}
return res;
}
$scope.datas.resultsOrder = transform(passTheArrayHere);
注意:不保证订单。
答案 1 :(得分:1)
我喜欢UnderscoreJS这些问题。在underscoreJS中,您可以执行以下操作:
function uniq(array) {
var grouped = _.groupBy(array);
return _.reduce(grouped, function(result, x) {
if(x.length > 1) {
_.each(x, function(val, key) {
result.push(val + '_' + (key + 1));
});
} else {
result.push(x[0]);
}
return result;
},[]);
}
uniq(['Data1','Data2','Data3','Data3','Data4','Data4']);
// ["Data1", "Data2", "Data3_1", "Data3_2", "Data4_1", "Data4_2"]