javascript - 获取 JSON 子对象数组以及在数组中查找匹配项的 Angular 方式。

标签 javascript json angularjs

问题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[] 我的下一个工作是执行搜索以检查数组 中是否存在给定变量 varString tagNames[] 并相应地返回 true 或 false。 我知道 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/

相关文章:

php - utf8_encode 不编码特殊字符 ě/š/č/ř/ž/ý/á 等

javascript - AngularJS 丢失了从 multipartForm 指令到路由的数据

javascript - jQuery - 在按钮单击时淡入和淡出不同的元素

javascript - 空格在此 JS 正则表达式中的意义?

javascript - 如果元素不存在于其他数组中,则将其包含在数组中

javascript - js删除提交的表单数据

javascript - NPM Pack/Nodejitsu 忽略隐藏的 Node_modules 文件夹

ios - 如何使用 Alamofire swift 3 从这个 JSON 中获取值

javascript - 从数据库获取数据到angular js

javascript - 我可以使用 Materialise 在 View 中处理多个 .html 吗?