有没有一种方法可以使用函数的输入参数在对象内部获取另一个对象。我要为名称设置两个不同的$ scope变量,一个用于区域经理,另一个用于建筑经理。在此示例中,我在每个对象内循环以获取名称。我将需要执行两次此过程,因此我不希望重复多次,因此创建了一个函数。问题是,每当我使用“ value.functionInputValue”时,我都会收到一条错误消息,指出它无法从未定义中读取。有人可以帮助我知道我哪里出错了吗?

JavaScript:

$scope.zones = [{
        zoneManagers: {
        zone1: {
            name: 'Name',
            phone: 1111111
        },
        zone2: {
            name: 'Name',
            phone: 1111111
        },
        zone3: {
            name: 'Name',
            phone: 1111111
        },
    constructionManagers: {
        zone1: {
            name: 'Name',
            phone: 1111111
        },
        zone2: {
            name: 'Name',
            phone: 1111111
        },
        zone3: {
            name: 'Name',
            phone: 1111111
        }
    }
}];


function namesFilter(zoneType)
{
    var allZoneManagerNames = [];
        angular.forEach($scope.zones, function(value, key)
        {
            var zoneTypeArray = Object.keys(value);
            if ( zoneTypeArray.indexOf(zoneType) != 1 )
            {
                angular.forEach(value.zoneType, function(value2, key2)
                {
                    if (allZoneManagerNames.indexOf(value2.name) == -1)
                    {
                        allZoneManagerNames.push(value2.name);
                    }
                });
            }
        });
        return allZoneManagerNames;
}

$scope.allZoneManagerNames = namesFilter("zoneManagers");

最佳答案

我认为应该是value[zoneType]而不是value.zoneType,因为zoneType是作为参数传递给函数的String

另外,如@mhodges所述,它应该是zoneTypeArray.indexOf(zoneType) != -1而不是zoneTypeArray.indexOf(zoneType) != 1,但是在这种情况下,您可以像这样简单地进行检查:

if(value[zoneType]){
    ...
}

10-06 00:49