Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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中的两个列表_Angularjs - Fatal编程技术网

比较angularJs中的两个列表

比较angularJs中的两个列表,angularjs,Angularjs,我有两个从两个不同的json对象创建的列表: <ul ng-repeat="a in user.data"> <li> <md-checkbox> {{ a.name }} </md-checkbox> </li> </ul> {{a.name}} 以及: {{x.user.name} 我必须比较两个列表并删除与{{job.u

我有两个从两个不同的json对象创建的列表:

<ul ng-repeat="a in user.data">
    <li>
        <md-checkbox>
              {{ a.name }}
         </md-checkbox>
    </li>
</ul>
  • {{a.name}}
以及:

  • {{x.user.name}

我必须比较两个列表并删除与
{{job.user.name}}
相同的
{{a.name}}
。比较具有不同结构的json对象很困难。如何比较这两个列表并删除重复的项目?

类似的内容应该会有所帮助:

for(i=0; i<user.data.length;i++){
    for(j=0; j<job.data.length;j++){
        if(user.data[i].name === job.data[j].name){
            user.date.splice(i,1);
        }
    }
}

for(i=0;i类似的内容应该有帮助:

for(i=0; i<user.data.length;i++){
    for(j=0; j<job.data.length;j++){
        if(user.data[i].name === job.data[j].name){
            user.date.splice(i,1);
        }
    }
}

对于(i=0;i您可以通过过滤一个数组创建一个新数组:

var newArray = job.data.filter(function(jobData) {
    return user.data.some(function(userData) {
         return userData.name === jobData.user.name;
    });
});

您可以通过过滤其中一个阵列来创建新阵列:

var newArray = job.data.filter(function(jobData) {
    return user.data.some(function(userData) {
         return userData.name === jobData.user.name;
    });
});

您可以在表达式参数中使用函数而不是字符串来使用
filter
filter;)。请记住这是
filter

{{ filter_expression | filter : expression : comparator}}
表达式
可以是字符串、对象或函数

$scope.filterUnemployed = function(value) {
    var jobs = $scope.job.data;
    for (var i = 0; i < jobs.length; i++) {
        // Search every object in the job.data array for a match. 
        // If found return false to remove this object from the results
        if (jobs[i].user.name === value.name) {
            return false;
        }
    }
    // Otherwise return true to include it
    return true;
}
请注意,这不会修改原始集合,但会在html中显示新副本,因为这通常是所需的效果

检查示例是否有可用的演示

angular.module('app',[])
.controller('SampleCtrl',函数($scope){
$scope.user={
数据:[{
名字:“约翰”
}, {
名字:“玛丽”
}, {
名字:“彼得”
}, {
名字:“杰克”
}, {
姓名:“理查德”
}, {
姓名:“伊丽莎白”
}]
};
$scope.job={
数据:[{
职位名称:“首席执行官”,
用户:{
名字:“约翰”
}
}, {
职位名称:“首席财务官”,
用户:{
名字:“玛丽”
}
}, {
职位名称:'分析学家',
用户:{
名字:“杰克”
}
}]
};
$scope.filterUnemployed=函数(值){
var jobs=$scope.job.data;
对于(变量i=0;i

所有用户
  • {{a.name}}
失业用户
  • {{a.name}}
雇佣
  • {{x.user.name}

您可以在expression参数中使用函数而不是字符串来使用
过滤器。记住这是
filter

{{ filter_expression | filter : expression : comparator}}
表达式可以是字符串、对象或函数。这样就行了

$scope.filterUnemployed = function(value) {
    var jobs = $scope.job.data;
    for (var i = 0; i < jobs.length; i++) {
        // Search every object in the job.data array for a match. 
        // If found return false to remove this object from the results
        if (jobs[i].user.name === value.name) {
            return false;
        }
    }
    // Otherwise return true to include it
    return true;
}
请注意,这不会修改原始集合,但会在html中显示新副本,因为这通常是所需的效果

检查示例是否有可用的演示

angular.module('app',[])
.controller('SampleCtrl',函数($scope){
$scope.user={
数据:[{
名字:“约翰”
}, {
名字:“玛丽”
}, {
名字:“彼得”
}, {
名字:“杰克”
}, {
姓名:“理查德”
}, {
姓名:“伊丽莎白”
}]
};
$scope.job={
数据:[{
职位名称:“首席执行官”,
用户:{
名字:“约翰”
}
}, {
职位名称:“首席财务官”,
用户:{
名字:“玛丽”
}
}, {
职位名称:'分析学家',
用户:{
名字:“杰克”
}
}]
};
$scope.filterUnemployed=函数(值){
var jobs=$scope.job.data;
对于(变量i=0;i

所有用户
  • {{a.name}}
失业用户
  • {{a.name}}
雇佣
  • {{x.user.name}

您可以使用vanilla javascript或库

请查看相关链接:


您可以使用vanilla javascript或库

请查看相关链接:


删除是指过滤?对吗?修改您的原始集合将涉及与angular本身无关但与普通javascript相关的代码?对吗?修改原始集合将涉及与angular本身无关但与普通javascript相关的代码。