将重复值推入 javascript 数组后如何消除重复值
How do I eliminate duplicate values after pushing it inside javascript array
我想删除 chartDataResults2 数组中状态的重复值:
for (i = 0; i < dataResults.length; i++) {
function groupBy(array, f) {
var groups = {};
array.forEach(function(o) {
var group = JSON.stringify(f(o));
groups[group] = groups[group] || [];
groups[group].push(o);
});
return Object.keys(groups).map(function(group) {
return groups[group];
})
}
var result = groupBy(dataResults, function(item) {
return [item.State.Title];
});
States1 = result[i][0].State.Title;
chartDataResults2.push({
States: States1,
Mineraltype: Mineraltype,
CollectionAmount: CollectionAmount,
Major: major,
Minor: minor,
CoalLignite: coal,
balloonTextField: Mineraltype + ", Total Amount Collected:" + CollectionAmount,
});
}
States 有值(Andhra Pradesh,Gujarat,Gujarat)。它应该删除重复项并只保留(Andhra Pradesh,Gujarat)。
{States: "ANDHRA PRADESH", CollectionAmount: 187, Major: 187, Minor: 0, …}
{States: "GUJARAT", CollectionAmount: 301, Major: 158, Minor: 90, …}
{States: "GUJARAT", CollectionAmount: 0, Major: 0, Minor: 0, …}
您可以使用 array#reduce
根据对象中的 States
值对数据进行分组。然后从对象中提取出所有值。
var data = [{States: "ANDHRA PRADESH", CollectionAmount: 187, Major: 187, Minor: 0},{States: "GUJARAT", CollectionAmount: 301, Major: 158, Minor: 90},{States: "GUJARAT", CollectionAmount: 0, Major: 0, Minor: 0}];
var result = Object.values(data.reduce((r,o) => {
r[o.States] = r[o.States] || {...o};
return r;
},{}));
console.log(result);
var json_all = [{States: "ANDHRA PRADESH", CollectionAmount: 187, Major: 187, Minor: 0, …},{States: "GUJARAT", CollectionAmount: 301, Major: 158, Minor: 90, …},{States: "GUJARAT", CollectionAmount: 0, Major: 0, Minor: 0, …}];
var arr = [],
collection = [];
$.each(json_all, function (index, value) {
if ($.inArray(value.id, arr) == -1) {
arr.push(value.id);
collection.push(value);
}
});
试试这个方法
我想删除 chartDataResults2 数组中状态的重复值:
for (i = 0; i < dataResults.length; i++) {
function groupBy(array, f) {
var groups = {};
array.forEach(function(o) {
var group = JSON.stringify(f(o));
groups[group] = groups[group] || [];
groups[group].push(o);
});
return Object.keys(groups).map(function(group) {
return groups[group];
})
}
var result = groupBy(dataResults, function(item) {
return [item.State.Title];
});
States1 = result[i][0].State.Title;
chartDataResults2.push({
States: States1,
Mineraltype: Mineraltype,
CollectionAmount: CollectionAmount,
Major: major,
Minor: minor,
CoalLignite: coal,
balloonTextField: Mineraltype + ", Total Amount Collected:" + CollectionAmount,
});
}
States 有值(Andhra Pradesh,Gujarat,Gujarat)。它应该删除重复项并只保留(Andhra Pradesh,Gujarat)。
{States: "ANDHRA PRADESH", CollectionAmount: 187, Major: 187, Minor: 0, …}
{States: "GUJARAT", CollectionAmount: 301, Major: 158, Minor: 90, …}
{States: "GUJARAT", CollectionAmount: 0, Major: 0, Minor: 0, …}
您可以使用 array#reduce
根据对象中的 States
值对数据进行分组。然后从对象中提取出所有值。
var data = [{States: "ANDHRA PRADESH", CollectionAmount: 187, Major: 187, Minor: 0},{States: "GUJARAT", CollectionAmount: 301, Major: 158, Minor: 90},{States: "GUJARAT", CollectionAmount: 0, Major: 0, Minor: 0}];
var result = Object.values(data.reduce((r,o) => {
r[o.States] = r[o.States] || {...o};
return r;
},{}));
console.log(result);
var json_all = [{States: "ANDHRA PRADESH", CollectionAmount: 187, Major: 187, Minor: 0, …},{States: "GUJARAT", CollectionAmount: 301, Major: 158, Minor: 90, …},{States: "GUJARAT", CollectionAmount: 0, Major: 0, Minor: 0, …}];
var arr = [],
collection = [];
$.each(json_all, function (index, value) {
if ($.inArray(value.id, arr) == -1) {
arr.push(value.id);
collection.push(value);
}
});
试试这个方法