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

时间:2017-08-31 11:07:58

标签: javascript angularjs angular-local-storage

我有以下代码,当用户在每个产品描述页面上点击compre时,我使用本地存储来存储Product varient 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}

3 个答案:

答案 0 :(得分:0)

与棱角无关,

我建议您使用lodash uniq函数来执行此操作: https://lodash.com/docs/4.17.4#uniq

答案 1 :(得分:0)

您可以使用地图并过滤掉重复的内容

//$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);

答案 2 :(得分:0)

使用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];
});
  

结果是:[{ProductVarient:5},{ProductVarient:33}]