1

我是一名自学编程新手,使用 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"]}]

角度控制器:

    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 :("
        });
};
4

1 回答 1

1

你的数据是一个数组而不是一个对象,所以for(var item in data)给你像 0,1,2 这样的索引,这可能是一个问题

所以你应该使用

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

要查找标签数组是否包含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 :("
        });
};

请参阅示例小提琴以了解区别:http: //jsfiddle.net/jmBjD/

于 2013-07-13T06:38:27.620 回答