2017-11-17 1 views
-1

내 onRegister 함수에서 배열 값 이름을 검색하려고합니다. 하지만 arrayFullNames.name이 맞다고 생각하지 않습니다.개체 배열에서 배열 값 검색

 var arrayFullNames = [ 
     {name: 'David', surname: 'Jones', age: 29}, 
     {name: 'Jack', surname: 'Sparrow', age: 33}, 
     {name: 'Monkey', surname: 'Idontknow', age: 9}, 
     {name: 'JavaScript' , surname: 'Something', age: '6 weeks'} 
    ]; 

    function onRegister(){ 
     var userQuestion = prompt("What is your name", ''); 

    if(userQuestion == arrayFullNames.name){ 
     alert('name match'); 
    }else{ 
     alert('no match'); 
    } 
    } 
+1

여기에 첫 번째 대답은 도움이 될 수 있습니다 : https://stackoverflow.com/questions/3010840/loop-through-an-array-in-javascript을 당신이 누락 – Tals

답변

0

배열은 개체가 아닌 인덱스를 기반으로 작동합니다.

var arrayFullNames = [ 
    {name: 'David', surname: 'Jones', age: 29}, 
    {name: 'Jack', surname: 'Sparrow', age: 33}, 
    {name: 'Monkey', surname: 'Idontknow', age: 9}, 
    {name: 'JavaScript' , surname: 'Something', age: '6 weeks'} 
]; 

function onRegister(){ 
    var userQuestion = prompt("What is your name", ''); 
    for(var i=0; i< arrayFullNames.length; i++){ 
    if(userQuestion == arrayFullNames[i].name){ 
     alert('name match'); 
     return true; 
    } 
    } 
    alert('no match'); 
    return false; 
} 
+0

당신' [i]'if 문에서'arrayFullNames.name'에 – Matt

0

다음 당신은이 문제를 해결하기 위해 array.indexOf 기능을 사용할 수있는 시도 :

if (arrayFullNames.indexOf(function(obj) { 
    return userQuestion == obj.name; 
}) > -1) { 
    alert('name match'); 
} else { 
    alert('no match'); 
} 

indexOf 반환 -1 배열에 일치 없었다 경우는 true, 그렇지 않은 경우는 경기의 인덱스를 반환합니다.

비슷한 방식으로 array.includes을 사용할 수도 있습니다. 어레이 내의 적어도 하나 개의 원소 제공된 기능에 의해 구현되는 테스트를 통과 여부

1

array#some

은 몇() 메소드는 테스트를 사용할 수있다.

var arrayFullNames = [{ name: 'David', surname: 'Jones', age: 29 }, { name: 'Jack', surname: 'Sparrow', age: 33 }, { name: 'Monkey', surname: 'Idontknow', age: 9 }, { name: 'JavaScript', surname: 'Something', age: '6 weeks' } ]; 
 

 
function onRegister() { 
 
    var userQuestion = prompt("What is your name", ''); 
 
    if (arrayFullNames.some(({name}) => name === userQuestion)) { 
 
    alert('name match'); 
 
    } else { 
 
    alert('no match'); 
 
    } 
 
} 
 
onRegister()