如何删除范围变量中存在的重复项

How to remove duplicate items present in scope variable

我有以下代码,当用户在每个产品描述页面上点击压缩时,我使用本地存储来存储产品变体 ID 数组。:

"Prdvar" 包含产品变体 ID(例如:10,13 等)

a.push(JSON.parse(localStorage.getItem('session')));
    localStorage.setItem('session', JSON.stringify(a));
    $scope.dataVarID = JSON.parse(localStorage.getItem('session'));

    alert($scope.dataVarID); //Duplicate values present

    $scope.CompareProduct = function()  {

        a = JSON.parse(localStorage.getItem('session'));
        a.push("{ ProductVarient :"+Prdvar+"}");
        alert(a);
        localStorage.setItem('session', JSON.stringify(a));

     };

我的问题是如何删除 $scope.dataVarID.

中存在的重复项
,{ ProductVarient :5},{ ProductVarient :5},{ ProductVarient :5},{ ProductVarient :33}

// 我不知道 首先,添加然后是 12,13,12,12

我只需要,{ ProductVarient :5},{ ProductVarient :33}

与angular、

无关

我建议你使用 lodash uniq 函数来做到这一点: https://lodash.com/docs/4.17.4#uniq

您可以使用地图并过滤掉重复项

//$scope.dataVarID = JSON.parse(localStorage.getItem('session'));
function getUniqueArrayObject(array) {
    var result = array.map(function(a) {
        return a.ProductVarient;
    });
    var unique = [];
    for (var x = 0; x < result.length; x++) {
        if (unique.indexOf(result[x]) == -1) unique.push(result[x]);
    }
    return (unique.map(function(a) {
        return {
            ProductVarient: a
        };
    }))
}
var newArray = getUniqueArrayObject([{ ProductVarient :5},{ ProductVarient :5},{ ProductVarient :5},{ ProductVarient :33}])
console.log(newArray)
// $scope.newArray=getUniqueArrayObject($scope.dataVarID);

使用http://underscorejs.org/

加入你的项目,这个库对数组操作很有帮助。

var arrray = [{ ProductVarient :5},{ ProductVarient :5},{ ProductVarient :5},{ ProductVarient :33}]

var result = _.map(_.groupBy(ar,function(doc){
  return doc.ProductVarient;
}),function(grouped){
  return grouped[0];
});

Result is: [{ ProductVarient :5},{ ProductVarient :33}]