将重复值推入 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);
    }
});

试试这个方法