2012-09-13 7 views
4

이 스크립트를 올바르게 작성하여 객체의 값과 일치시킬 수있는 방법.jQuery는 다차원 배열/객체에서 일치 값을 찾습니다.

var objGroup = [ 
    { "color": "YELLOW", "number": "11,7,44,22" }, 
    { "color": "BLUE", "number": "8,20,9" }, 
    { "color": "GREEN", "number": "12,34,55" } 
]; 
objGroup.map(function (groupNum) { 
    if (groupNum.number== "11") { 
    alert(groupNum.color); 
    } else { 
    return null 
    } 
});​ 
+0

더 자세히 설명해주십시오. number-property가 객체 또는 배열이 아닙니다. 숫자가 들어있는 문자열입니다. 그리고 코드에서 jQuery를 사용하지 않고 있습니까? – LeJared

답변

8

제공된 숫자를 포함하는 숫자 값을 가진 개체를 반환합니다. 널리 지원되지 않습니다 새로운 .filter 기능을 사용하여

var objGroup = [ 
    { "color": "YELLOW", "number": "11,7,44,22" }, 
    { "color": "BLUE", "number": "8,20,9" }, 
    { "color": "GREEN", "number": "12,34,55" } 
]; 

var found = findItem(objGroup, '11'); 

function findItem(array, value) { 
    for (var i = 0; i < array.length; i++) { 
     if (array[i].number.split(',').indexOf(value) >= 0) { 
      return objGroup[i]; 
     } 
    } 
} 

if (found) { 
    alert(found.color); 
} 

http://jsfiddle.net/rVPu5/

대안 :

var found = objGroup.filter(function(item) { 
    if (item.number.split(',').indexOf('11') >= 0) { 
     return true; 
    } 
    return false; 
}); 

if (found.length > 0) { 
    alert(found[0].color); 
} 

http://jsfiddle.net/rVPu5/2/

마지막으로 - JQuery와 버전 :

var found = $.map(objGroup, function(item) { 
    if (item.number.split(',').indexOf('11') >= 0) { 
     return item; 
    } 
}); 

if (found.length > 0) { 
    alert(found[0].color); 
} 

http://jsfiddle.net/rVPu5/3/

+0

정말 고마워요 !!! – kedomonzter

관련 문제