如何删除Duplicate以便显示只有1s的唯一标签。
我的价值观
像
[
{"y":2,"label":"Adnim"},
{"y":2,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":0,"label":"Adnim2"},
]
我需要的最终输出是
[
{ y: 2 , label: 'Adnim' },
{y: 3 , label: 'Adnim2'},
]
忽略“0”只计算“1”并单独显示
仅供参考:标签价值将会改变
答案 0 :(得分:2)
我希望我能正确理解你。该程序查找每个label
的出现次数,并将其放入相应的y
字段。
var list = [
{"y":2,"label":"Adnim"},
{"y":2,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":0,"label":"Adnim2"},
]
var counters = {}
var result = [];
var label;
list.forEach(function(el){
label = el.label;
// Skip zero y's
if (el.y === 0) return;
// Increase counter values
if (counters.hasOwnProperty(label)) {
counters[label] += 1;
} else {
counters[label] = 1;
}
});
// Convert counters object to array of objects
for (var label in counters) {
result.push({'label': label, 'y': counters[label]});
}
结果是:
[{"label":"Adnim","y":2},{"label":"Adnim2","y":3}]
答案 1 :(得分:1)
我感谢Anton Melnikov提出以下解决方案。谢谢Buddy。
HTML:
<div id="target"></div>
使用Javascript:
var list = [
{y:0,label:'Adnim'},
{y:0,label:'Adnim'},
{y:0,label:'Adnim'},
{y:1,label:'Adnim'},
{y:0,label:'Adnim2'},
{y:0,label:'Adnim2'},
{y:1,label:'Adnim2'},
{y:1,label:'Adnim2'},
]
var counters = {}
var result = [];
var resultString = '';
var label;
list.forEach(function(el){
label = el.label;
// Skip zero y's
if (el.y === 0) return;
// Increase counter values
if (counters.hasOwnProperty(label)) {
counters[label] += 1;
} else {
counters[label] = 1;
}
});
// Convert counters object to array of objects
for (var label in counters) {
result.push({'label': label, 'y': counters[label]});
}
// Render result to the target div
console.log(result);
result = result.map(function(el){ return '{y: ' + el.y + ', label: "' + el.label + '"}' });
resultString = '[' + result.join(', ') + ']';
$('#target').html(resultString);
答案 2 :(得分:0)
一个不错的选择是使用lodash库,其中包含唯一
的功能以下是将其用于解决问题的方法:
var objectArray = [
{"y":2,"label":"Adnim"},
{"y":2,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":0,"label":"Adnim2"},
],
uniquesObjects = _.uniq(objectArray, 'y');
输出:
[{y: 2, label: 'Adnim'},{y: 0, label: 'Adnim2'}]
答案 3 :(得分:0)
或者,您可以使用纯JavaScript解决方案:
function uniques(objectArray, key){
var uniques = {}, values = [];
objectArray.forEach(function(obj){
if (!uniques[obj[key]]){
values.push(obj);
}
uniques[obj[key]] = obj;
});
return values;
}
var objectArray = [
{"y":2,"label":"Adnim"},
{"y":2,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":0,"label":"Adnim"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":2,"label":"Adnim2"},
{"y":0,"label":"Adnim2"},
],
uniquesObjects = uniques(objectArray, 'y');
输出
[{y: 2, label: 'Adnim'},{y: 0, label: 'Adnim2'}]