2017-12-05 20 views
0

나는 다음과 같은 요구 사항을 충족하는 함수를 작성하려고 해요 .일반 for 루프와 for ... for의 차이점은 무엇입니까? 객체와 키를 감안할 때</p> <p>는 "getElementsThatEqual10AtProperty는"10 동일 지정된 키에있는 배열의 모든 요소를 ​​포함하는 배열을 반환

참고 : 배열이 비어

  • 경우는 하늘의 배열을 반환해야합니다.
  • 배열에 요소가 10 개 포함되어 있지 않으면 빈 배열 을 반환해야합니다.
  • 지정된 키의 속성이 배열이 아닌 경우 빈 배열을 반환해야합니다.
  • 키에 등록 정보가 없으면 빈 배열을 반환해야합니다.

예 :

var obj = { 
    key: [1000, 10, 50, 10] 
}; 
var output = getElementsThatEqual10AtProperty(obj, 'key'); 
console.log(output); // --> [10, 10] 

접근법 # 1 (키에 어떠한 속성이 없으면, 빈 배열을 반환한다 최종 점 * 실패.)

function getElementsThatEqual10AtProperty(obj, key) { 

    var output = []; 
    for (var i = 0; i < obj[key].length; i++) { 
    if (obj[key][i] === 10) { 
     output.push(obj[key][i]); 
    } 
    } 
return output; 
} 

접근법 # 2 모두 전달 :

function getElementsThatEqual10AtProperty(obj, key) { 

    var output = []; 
    for (let i in obj[key]) { 
    if (obj[key][i] === 10) { 
     output.push(obj[key][i]); 
    } 
    } 
    return output; 
} 

내 이해에 따라, 후속 조건부 푸시는 동일한 논리를가집니다. 왜 다른 하나를 통해 작동합니까?

+0

https://stackoverflow.com/questions/5263847/javascript-loops-for-in-vs-for – epascarello

답변

1

당신은 이것을 필요 이상으로 복잡하게 만듭니다. 다음과 같이하면됩니다.

function getSameVals(yourArray, val){ 
    var a = []; 
    for(var i=0,l=yourArray.length; i<l; i++){ 
    if(yourArray[i] === val){ 
     a.push(val); 
    } 
    } 
    return a; 
} 
var ten = getSameVals(obj.key, 10); 
console.log(ten);