2016-06-08 2 views
-3

배열에서 값을 반환해야하는 함수가 있습니다.Javascript, foreach 함수에서 값을 반환하는 방법

function getValue(key) : value 

function getValue(key) { 
     var result = null; 
     $scope.config.forEach(function(element) { 
      if(element.app_key == "search_result_limit") 
      result = element.app_value; 
      break; 
     }); 
     return result; 
    } 

이 값을 가져 오려고하지만 정의되지 않은 것으로 나타납니다.

도와주세요. 만약 필터 방법 사용해야

+1

ES6'find'. 'return $ scope.config.find (o => o.app_key === '검색 _ 결과 _ 제한') || {};' – Tushar

+0

@Tushar 함수는 빈 객체가 아닌 'null'을 반환하도록되어있는 것처럼 보입니다. (전체 객체가 아니라'.app_value' 만) – Alnitak

답변

1

: 당신 $scope.config 오브젝트의 배열임을 고려

$scope.config.filter(function(element) { 
      return element.app_key == "search_result_limit"; 
}); 

을 ...

+2

이 함수는 배열, OP의 요구 사항에 따라 배열 값이 아닙니다. – ste2425

+0

나중에 .. 나는 그 부분을 놓쳤다 !! :) –

1

현대 JS는 Array.prototype.find 가지고

function getValue(key) { 
    var obj = $scope.config.find(function(e) { 
     return e.app_key === key; 
    }); 
    return obj ? obj.app_value : null; 
} 

또는 ES6하여 구문 :

function getValue(key) { 
    var obj = $scope.config.find(e => e.app_key === key); 
    return obj ? obj.app_value : null; 
} 
당신이 ES6이없는 경우

, 당신은 단지 일반 for 루프를 사용하는 것이 더 낫다 :

function getValue(key) { 
    for (var a = $scope.config, i = 0, n = a.length; i < n; ++i) { 
     if (a[i].app_key === key) { 
      return a[i].app_value; 
     } 
    } 
    return null; 
} 
+0

현대 JS는 [내 코멘트] (http://stackoverflow.com/questions/37699181/javascript-how-to-return-value-from-foreach-function# comment62873000_37699181) – Tushar

+0

@Tushar 네, 만약 당신이 "최첨단의 최첨단"이라면. – Alnitak

+0

['find BS] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find#Browser_compatibility) & [화살표 기능 BS] (https : //developer.mozilla .org/ko/docs/웹/JavaScript/참조/기능/Arrow_functions # Browser_compatibility) 닫습니다. – Tushar

0

당신은 블록에 if 문 내부에 두 개의 문을 넣어해야합니다. 사용이 코드는,이 작동 할 수 있습니다 : -

function getValue(key) : value 

function getValue(key) { 
     for (var a = $scope.config, i=0, n = a.length; i< n ; i++){ 
       if (a[i].app_key === key) { 
        return a[i].app_value; 
       } 
     } 
     return null; 
    } 
+3

또한'forEach'에서'break' 할 수 없습니다. 반복은 계속 될 것이다. – ste2425

+0

@ ste2425 일부 변경 사항이 있습니다. – Ajay

0

사용이 코드

function getValue(key) {  
    var result= $scope.config.filter(function(item) { 
     return item.app_key == key;   
    }); 
    return result.length>0?result[0].app_value:null;   
} 
관련 문제