Javascript 如果第二个对象中的名称匹配,则隐藏按钮

Javascript 如果第二个对象中的名称匹配,则隐藏按钮,javascript,html,angularjs,Javascript,Html,Angularjs,嗨,我有两个对象,一个用于在表中显示列表 $scope.data=[ {"id" : "1","name" : "item1"}, {"id" : "2","name" : "item2"}, {"id" : "4","name" : "item4"}, {"id" : "7","name" : "item7"}, {"id" : "8","name" : "item8"}, {"id" : "9","name" : "item9"},

嗨,我有两个对象,一个用于在表中显示列表

 $scope.data=[
    {"id" : "1","name" : "item1"},
    {"id" : "2","name" : "item2"},
    {"id" : "4","name" : "item4"},
    {"id" : "7","name" : "item7"},
    {"id" : "8","name" : "item8"},
    {"id" : "9","name" : "item9"},
    ]
其中,对象由项目名称列表组成,如下所示

 $scope.items=[
          {id:"1",itemName:"item1"},
          {id:"2",itemName:"item5"},
        ]
在表中,我显示了第一个对象中的数据以及每个tr中的按钮。现在,如果第二个对象中存在该项名称,我需要隐藏tr中的按钮

var c=angular.module('myApp',[]) c、 控制器('myCtrl',函数($scope){ $scope.data=[ {“id”:“1”,“name”:“item1”}, {“id”:“2”,“name”:“item2”}, {“id”:“4”,“name”:“item4”}, {“id”:“7”,“name”:“item7”}, {“id”:“8”,“name”:“item8”}, {“id”:“9”,“name”:“item9”}, ] $scope.items=[ {id:“1”,itemName:“item1”}, {id:“2”,itemName:“item5”}, ] })

你好,普朗克!
名称
行动
{{row.name}
编辑

您可以创建另一个这样的数组来保存itemName的值

$scope.values = $scope.items.map(i => i.itemName);
在你的模板中,像这样使用它

ng-hide="values.indexOf(row.name) > -1"
var c=angular.module('myApp',[]) c、 控制器('myCtrl',函数($scope){ $scope.data=[ {“id”:“1”,“name”:“item1”}, {“id”:“2”,“name”:“item2”}, {“id”:“4”,“name”:“item4”}, {“id”:“7”,“name”:“item7”}, {“id”:“8”,“name”:“item8”}, {“id”:“9”,“name”:“item9”}, ] $scope.items=[ {id:“1”,itemName:“item1”}, {id:“2”,itemName:“item5”}, ]; $scope.values=$scope.items.map(i=>i.itemName); })

你好,普朗克!
名称
行动
{{row.name}
编辑

在html按钮中使用类似的内容

<button type="submit" ng-if="checkIfExists(row.id)">Edit</button>
var c=angular.module('myApp',[]) c、 控制器('myCtrl',函数($scope){ $scope.data=[ {“id”:“1”,“name”:“item1”}, {“id”:“2”,“name”:“item2”}, {“id”:“4”,“name”:“item4”}, {“id”:“7”,“name”:“item7”}, {“id”:“8”,“name”:“item8”}, {“id”:“9”,“name”:“item9”}, ] $scope.items=[ {id:“1”,itemName:“item1”}, {id:“2”,itemName:“item5”}, ]; $scope.checkIfExists=(id)=>$scope.items.map(elem=>elem.id).includes(id); })

你好,普朗克!
名称
行动
{{row.name}
编辑

通过使用辅助程序库,例如
下划线
lodash
,可以使此解决方案简单得多,但这应该是可行的:

angular.module('myApp',[]).controller('myCtrl',function($scope){
$scope.data=[
{“id”:“1”,“name”:“item1”},
{“id”:“2”,“name”:“item2”},
{“id”:“4”,“name”:“item4”},
{“id”:“7”,“name”:“item7”},
{“id”:“8”,“name”:“item8”},
{“id”:“9”,“name”:“item9”},
];  
$scope.items=[
{id:“1”,itemName:“item1”},
{id:“2”,itemName:“item5”},
];
$scope.itemExists=函数(名称){
var=false;
$scope.items.forEach(函数(elem){
if(elem.itemName==名称){
存在=真;
}
}));
回报存在;
}
});

你好,普朗克!
名称
行动
{{row.name}
编辑

您可以在
ng show
指令中使用JavaScript数组()的
find
方法来完成以下任务:

var c=angular.module('myApp',[]) c、 控制器('myCtrl',函数($scope){ $scope.containsItem=功能(项){ return item.itemName==this; }; $scope.data=[ {“id”:“1”,“name”:“item1”}, {“id”:“2”,“name”:“item2”}, {“id”:“4”,“name”:“item4”}, {“id”:“7”,“name”:“item7”}, {“id”:“8”,“name”:“item8”}, {“id”:“9”,“name”:“item9”}, ] $scope.items=[ {id:“1”,itemName:“item1”}, {id:“2”,itemName:“item5”}, ] })

你好,普朗克!
名称
行动
{{row.name}
编辑

创建一个新数组,并向该对象添加一个新键,如
showButton
,其值将根据两个数组中的项目而定为true或false

var c=angular.module('myApp',[]) c、 控制器('myCtrl',函数($scope){ $scope.data=[{ “id”:“1”, “名称”:“项目1” }, { “id”:“2”, “名称”:“项目2” }, { “id”:“4”, “名称”:“项目4” }, { “id”:“7”, “名称”:“第7项” }, { “id”:“8”, “名称”:“第8项” }, { “id”:“9”, “名称”:“第9项” }, ] $scope.items=[{ id:“1”, 项目名称:“项目1” }, { id:“2”, 项目名称:“项目5” }, ] $scope.updateData=$scope.data.map(函数(项){ var findIndex=$scope.items.findIndex(函数(secItem)){ return item.id==secItem.id }); 如果(findIndex==-1){ 返回{ “id”:项目id, “名称”:item.name, “showButton”:真 } }否则{ 返回{ “id”:项目id, “名称”:item.name, “showButton”:错误 } } }); });

你好,普朗克!
名称
行动
{{row.name}
编辑
$scope.checkIfExists = (id) => $scope.items.map(elem=>elem.id).includes(id);