问题1
假设我得到一个 JSON 对象 scope.tagSet
,它的格式如下。
{ Tags : [
{"TagID" : "ID1" , "TagName" : "Name1"},
{"TagID" : "ID2" , "TagName" : "Name2"},
{"TagID" : "ID3" , "TagName" : "Name3"}
]
}
在一个 Angular Directive(指令)中,我将 TagName
中的所有值组成一个数组,如下所示。
for(var i= 0; i < scope.tagSet.Tags.length; i++){
scope.tagNames[i] = scope.tagSet.Tags[i].TagName;
}
循环遍历和赋值是这里唯一的选择吗?或者有没有其他更有效的方法。
问题2
假设我有数组 tagNames[]
我的下一个工作是执行搜索以检查数组 中是否存在给定变量
并相应地返回 true 或 false。
我知道 varString
tagNames[]scope.tagNames.indexOf(varString)
会在没有匹配项时返回 -1
,
但它是 Angular 方式吗?这些方法是否被视为良好做法?
最佳答案
您可以做的是制作一个查找列表。在 javascript 中,您可以使用对象:
function arrayToLookup(a, key) {
var o = {};
for (var i = a.length; i--;) {
o[a[i][key]] = true;
}
return o;
}
这样使用
var lookupList = arrayToLookup(scope.tagSet.Tags, "TagName");
现在您可以通过执行以下操作检查它是否可用:
lookupList["Name1"];//returns true
关于javascript - 获取 JSON 子对象数组以及在数组中查找匹配项的 Angular 方式。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26234638/