假设我有两个对象: obj 和 obj2
obj = [
{"id": 0,"name": "foo","is_editable":true},
{"id": 1,"name": "bar","is_editable":true},
{"id": 2,"name": "app","is_editable":true}
]
obj2 = [
{"id": 0},
{"id": 2}
]
我需要设置属性 is_editable = false
如果obj的id在obj2中
我在这里有我的代码,它工作正常,但我对我的逻辑感到不舒服。
angular.forEach(data, function(obj) {
obj.is_checker = false;
angular.forEach(data2, function(obj2) {
if (obj2.id === obj.id)
obj.is_checker = true;
});
});
有更好的方法吗?
答案 0 :(得分:2)
你将需要一些循环,但你可以使用普通的旧JS。
obj.map(function(item) {
obj2.map(function(item2) {
if(item.id === item2.id) {
item.is_editable = false;
}
})
})
如果您想使用角度来完成它,请使用几乎相同的逻辑。
angular.forEach(obj, function(item) {
angular.forEach(obj2, function(item2) {
if (item.id === item2.id)
obj.is_editable = false;
});
});
答案 1 :(得分:1)
我就是这样做的:
obj.map(function(o){
o.is_editable = obj2.some(function(c){ return c.id === o.id });
return o;
});
我会使用some
函数来查找该项目是否可编辑。