Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从angularjs中的JavaScript数组中删除重复对象?_Javascript_Javascript Objects - Fatal编程技术网

如何从angularjs中的JavaScript数组中删除重复对象?

如何从angularjs中的JavaScript数组中删除重复对象?,javascript,javascript-objects,Javascript,Javascript Objects,这是我的密码 var studentsList=[ {“Id”:“101”,“name”:“siva”}, {“Id”:“101”,“name”:“siva”}, {“Id”:“102”,“name”:“hari”}, {“Id”:“103”,“name”:“rajesh”}, {“Id”:“103”,“name”:“rajesh”}, {“Id”:“104”,“name”:“ramesh”}, ]; 功能arr唯一(arr){ var=[]; 学生名单forEach(功能(itm){ var

这是我的密码

var studentsList=[
{“Id”:“101”,“name”:“siva”},
{“Id”:“101”,“name”:“siva”},
{“Id”:“102”,“name”:“hari”},
{“Id”:“103”,“name”:“rajesh”},
{“Id”:“103”,“name”:“rajesh”},
{“Id”:“104”,“name”:“ramesh”},
];
功能arr唯一(arr){
var=[];
学生名单forEach(功能(itm){
var-unique=true;
已清洁。forEach(功能(itm2){
如果(u.isEqual(itm,itm2))unique=false;
});
如果(唯一)清洁,则推送(itm);
});
返回清洁;
}
var uniqueStandards=arrUnique(学生名单);
document.body.innerHTML=''+JSON.stringify(uniqueStandards,null,4)+''这可能吗?(不是最有效的实施,但能完成任务):

var studentsList = [
  {Id: "101", name: "siva"},
  {Id: "101", name: "siva"},
  {Id: "102", name: "hari"},
  {Id: "103", name: "rajesh"},
  {Id: "103", name: "rajesh"},
  {Id: "104", name: "ramesh"},
];

var ids = {};

studentsList.forEach(function (student) {
  ids[student.Id] = (ids[student.Id] || 0) + 1;
});

var output = [];
studentsList.forEach(function (student) {
  if (ids[student.Id] === 1) output.push(student);
});

console.log(output);
编辑:如果学生按Id排序,则使用更快的方法

app.controller('myCntrl',function($scope){

    var seen = {};
    //You can filter based on Id or Name based on the requirement
    var uniqueStudents = studentsList.filter(function(item){
    if(seen.hasOwnProperty(item.Id)){
        return false;
    }else{
        seen[item.Id] = true;
        return true;
    }
});
    $scope.students = uniqueStudents;

});

您可以使用javascript的
过滤器
方法:

上述问题的解决办法可以在fiddle中找到。 这个解决方案的性能会更好,因为我们使用的是纯javascript,并且没有第三方开销

    var uniqueStandards = UniqueArraybyId(studentsList ,"id");

    function UniqueArraybyId(collection, keyname) {
              var output = [], 
                  keys = [];

              angular.forEach(collection, function(item) {
                  var key = item[keyname];
                  if(keys.indexOf(key) === -1) {
                      keys.push(key);
                      output.push(item);
                  }
              });
        return output;
   };
如果您需要任何其他详细信息,请告诉我。

检查此项

$scope.names= studentsList.reduce(function(array, place) {
         if (array.indexOf( studentsList.name) < 0) 
                array.push( studentsList.name );
         else
                array.splice(array.indexOf( studentsList.name), 1);
         return array;
}, []);

这是一个控制器,它将检测重复的元素并将其删除,并将为您提供没有重复的元素。用这个控制器就行了

var unique = arr.filter(function(elem, index, self) {
    return index === self.indexOf(elem);
})
$scope.names=studentsList.reduce(函数(数组、位置){
if(array.indexOf(studentsList.name)<0)
array.push(studentsList.name);
其他的
array.splice(array.indexOf(studentsList.name),1);
返回数组;
}, []);

希望这适用于您的案例

您可以使用librarylodash和method
uniqBy()

为什么不使用lodash或下划线库?使用
lodash
提高效率:这与Angular有什么关系?我很惊讶,这完全不是他想要的。@varun-您的代码将返回像101102103104这样的唯一对象,但我想得到102104它接受区分大小写。这表明“电子学”和“电子学”是两个不同的词。请补充一些解释,说明为什么这个代码可以工作,所以这是一个更有用的答案。
var unique = arr.filter(function(elem, index, self) {
    return index === self.indexOf(elem);
})