javascript - 当在数组中找到关键字时,循环遍历对象以提取属性名称的问题

标签 javascript loops angularjs underscore.js

我是一名自学编程新手,正在使用 Angular、Node.js 和图形数据库 noe4j 开发 Web 应用程序。

我正在尝试使用下划线库方法 _.contains 提取标签数组中包含标签“Core”的术语名称。我一直致力于找出正确的语法,任何指针都将不胜感激(包括避免在 SO 上提出烦人的语法问题的方法)。

我想我要么对循环如何遍历对象有疑问(每个“项目”是否包含一组 {} 中包含的内容?),要么对我尝试的方式有疑问识别循环内的按键完全关闭。

返回数据样本示例:

[{"name":"Sciences","labels":["Term","Science"]},{"name":"Image","labels":["Type","Image","Core"]},{"name":"GIF","labels":["Type","Image"]},{"name":"Infographic","labels":["Type","Image"]},{"name":"Chart","labels":["Type","Image"]},{"name":"Photo","labels":["Type","Image"]},{"name":"Microscope","labels":["Type","Image"]},{"name":"Telescope","labels":["Type","Image"]},{"name":"Text","labels":["Type","Text","Core"]}]

Angular Controller :

    function typeCtrl($scope, $http) {
    $http({method: 'GET', url:'/query/type' }).
        success(function(data){
            var theList = [];
            for(var item in data) {
                if (window._.contains(item.labels, "Core") === true) {
                    theList.push(item.name);
                }
            }

            $scope.display=theList;
            $scope.test = theList;
        }).
        error(function(data){
            $scope.type="Error :("
        });
};

最佳答案

您的数据是一个数组而不是对象,因此 for(var item in data) 为您提供像 0,1,2 这样的索引,这可能是一个问题

所以你应该使用

for(var i=0;i<data.length;i++)

要查找 labels 数组是否包含 Core ,您可以使用基本的 indexOf 方法

function typeCtrl($scope, $http){
    $http({method:'GET', url:'/query/type'}).
        success(function(data){
            var theList = [];
            for(var i=0;i<data.length;i++){
                if (data[i].labels.indexOf("Core") > -1){
                    theList.push(item.name);
                }
            }

            $scope.display=theList;
            $scope.test = theList;
        }).
        error(function(data){
            $scope.type="Error :("
        });
};

请参阅示例 fiddle 以了解差异:http://jsfiddle.net/jmBjD/

关于javascript - 当在数组中找到关键字时,循环遍历对象以提取属性名称的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17627581/

相关文章:

javascript - 我可以在不更新页面的情况下更改 URL 吗?

javascript - AJAX 与 FOR 循环 JS

javascript - 使用javascript循环生成1000个随机10位数字

angularjs - Angular 和 CORS

angularjs - 使用 $resource 发送 ETag

javascript - 在 html <video> 中将字节范围转换为时间范围

javascript - 这种技术在 javascript 中叫什么?

javascript - 这两种创建数组对象的方式之间的区别

c# - 如何迭代 List<T> where T : MyClass

angularjs - 如何通过 Azure Verizon Premium CDN 使用来自 Azure Blob 的路由为 Angular 2 SPA 提供服务