2016-12-07 62 views
0

我希望得到的是獲取的應用價值主要從Array - Angulajs

$scope.result = [ 
{ 

    "key":"logo_big", 
    "value":"/assets/images/aaa.jpg" 
    }, 
    { 
    "key":"logo_small", 
    "value":"/assets/images/logo94x57Bis.png" 
    }, 
    { 
    "key":"project_name", 
    "value":"Company" 
    }, 
    { 
    "key":"support_email", 
    "value":"[email protected]" 
    } 
    ]; 

我怎樣才能獲得「logo_big」的值的陣列從裏面鎖的特定值?

$scope.result['logo_big'] 

返回undefined

+0

就個人而言,我建議使用[lodas]等圖書館h](https://lodash.com),它是一個很棒的[find](https://lodash.com/docs/4.17.2#find)函數,可以在你的例子中用作'var item = _.find($ scope.result,{key:'logo_big'});' –

回答

1

您需要遍歷數組以找到具有給定鍵的元素。

或者,如果Array.find()是您的系統支持:

var item = $scope.result.find(function(element) { 
    return element.key === 'logo_big'; 
}); 
return item && item.value; 

非最佳的解決方案是使用過濾器:

var item = $scope.result.filter(function(element) { 
    return element.key === 'logo_big'; 
})[0]; 
return item && item.value; 
+0

投票結束重複,而不是提供一個相當古老和解決好的問題的答案。 –

1
const obj = $scope.results.filter(e => e.key == "logo_big")[0]; 

MDN Documentation

+2

@SamIam此代碼是有效的ES2015,即不是更新的JavaScript。 –

0

您首先有一個數組,每個數組項都是一個對象,所以如果你想訪問你必須遵循

for (var i = 0 ; i < $scope.result.length; i++) 
{ 
    if ($scope.result[i]["key"] == "logo_big") 
    { 
    alert("found value"); 
    } 
} 
0

如果你想在角的方式做,使用angular.foreach和檢查對象的鍵

angular.forEach($scope.result, function(obj) { 
     if (obj.key == "logo_big") { 
     $scope.resultObj = obj.value; 
     alert($scope.resultObj); 
     } 

DEMO

var app = angular.module("app", []); 
 
app.controller("listController", ["$scope", function($scope) { 
 
    $scope.name = 'StackOverflow'; 
 
    $scope.result = [{ 
 
    "key": "logo_big", 
 
    "value": "/assets/images/aaa.jpg" 
 
    }, { 
 
    "key": "logo_small", 
 
    "value": "/assets/images/logo94x57Bis.png" 
 
    }, { 
 
    "key": "project_name", 
 
    "value": "Company" 
 
    }, { 
 
    "key": "support_email", 
 
    "value": "[email protected]" 
 
    }]; 
 

 
    angular.forEach($scope.result, function(obj) { 
 
    if (obj.key == "logo_big") { 
 
     $scope.resultObj = obj.value; 
 
    } 
 
    }); 
 

 
}]);
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://code.angularjs.org/1.4.7/angular.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="script.js"></script> 
 
</head> 
 

 
<body ng-controller="listController"> 
 
    <h3>Enter an ID</h3> 
 
    <h1> {{resultObj}}</h1> 
 
</body> 
 

 
</html>