在AngularJS中的json对象中提取相应的值

时间:2014-05-22 10:48:41

标签: javascript json angularjs foreach

我正在使用AngularJS。我有一个json对象,如下所示;

info = [
{
    "name": "Tom",
    "id": "111"
},
{
    "name": "Sam",
    "id": "222"
},
{
    "name": "James",
    "id": "333"
}
]

我希望有一个函数,当找到一个匹配的名字时,会采取一些动作(在这个例子中,返回相应的id。)换句话说,如果输入匹配的名字是'Tom',我想要根据上面的json对象返回id'111。

我写了一些代码来找到匹配的名字。

$scope.getIdFromName = function()
        {
            angular.forEach(info, function(value, key)
            {
                //$scope.searchByName contains the name to be matched
                if (key === 'name' && value === $scope.searchByName)
                {
                    //$scope.searchById is the id to be returned
                    $scope.searchById = key;
                    alert("found");
                }
            }); 
        };

代码哪里出错了?或者它是如此错误,以至于完全重写是更好的?任何建议(不需要是angularjs)将是最受欢迎的。非常感谢你。

1 个答案:

答案 0 :(得分:3)

由于info是一个对象数组,因此键将成为每个项的索引,value将是该索引处的整个对象。你的forEach应该是这样的:

angular.forEach(info, function(value, key)
{
    //$scope.searchByName contains the name to be matched
    if (value.name === $scope.searchByName)
    {
        //$scope.searchById is the id to be returned
        $scope.searchById = value.id;
        alert("found");
    }
});