2012-01-05 3 views
0

나는 일부 항목을 정의하는 다음과 같은 자바 스크립트 배열 코드가 있습니다필터링이 차원 자바 스크립트 배열

product[17564] = Array; 
product[17564][1245] = ['BL-2810', 'text1']; 
product[17564][1246] = ['BL2810AB', 'text2']; 
product[17564][1247] = ['BL2810AN', 'text3']; 

product[17563] = Array; 
product[17563][1238] = ['BK-2810', 'text4']; 
product[17563][1239] = ['BK2810AB', 'text5']; 

product[17565] = Array; 
product[17565][1253] = ['CK-2810', 'text6']; 
product[17565][1254] = ['CK2810AN', 'text7']; 

을하고 나는 '제품'의 첫번째 인덱스를 기반으로 항목을 필터링 할 배열은 사용자가 동적으로 설정합니다.

product[17563][1238] 
product[17563][1239] 

을 다음과 코드에 항목 만 사용 : 예를 들어, 사용자 설정 숫자는 내가 그들의 첫번째 인덱스로 '17563'을 가지고 다음과 같은 항목을 필터링 할 '17563'입니다. 감사합니다. .

+3

그 코드는 당신이 생각하는대로하지 않습니다. "Array"로 설정하는 대신'[]'로 설정하십시오. – Pointy

+4

배열 대신 개체를 사용해야합니다. 그리고 당신의 문제는 무엇입니까? 변수로 속성/색인에 액세스하는 방법? –

+0

[변수는 연관 배열의 인덱스로 변수가 가능합니다 - 자바 스크립트] (http://stackoverflow.com/questions/4091257/variable-as-index-in-associative-array-javascript) –

답변

0

제품 카테고리가 있고 각 카테고리에 제품이있는 것으로 보입니다.

또한 범주와 모양이 같으며 제품에 배열 인덱스로 사용하는 종류의 ID가 있습니다.

데이터를 저장하기 위해 올바른 데이터 구조를 사용하지 않는 것 같습니다.

ID가 17883, 17884 및 17885 인 카테고리가 3 개 밖에 없으면 어떻게됩니까? 17886 (위치 0 계산) 배열로 끝나고 그 중 3 개를 사용합니다.

당신이해야 할 일은 범주 정보와 제품 정보를 저장 한 다음이 개체로 배열을 채우는 개체입니다. 예를 들어

:

var categories = new Array(); 

var category1 = new Object(); 
category1.id = 17883; 
category1.products = new Array(); 
categories[0] = category1; 

var product1 = new Object(); 
product1.id = 1233; 
product1.code = 'BK-404'; 
product1.name = 'text3'; 

category1.products[0] = product1; 
// and so on 

당신이 할 것입니다 정보를 확인할 수 : 도움을

var userInput = //receive user input 
for(var i = 0; i < categories.length; i++){ 
    if(categories[i].id == userInput){ 
     return categories[i].products; 
    } 
    return null; //category not found 
} 
0

덕분에, 그것은 나에게 JSON 객체를 사용 할 수있는 단서를 주었다. 사실 나는 제품 데이터와 각 제품이 가지고있는 몇 가지 변종을 속성 (즉, 응답과 마찬가지로 범주 및 속성이있는 제품과 유사한 논리)으로 가지고 있습니다.

은 결국 나는 내 초기 PHP 배열 ('$ 배열')있는 내가 데이터를 얻을,

$array_json=json_encode($array); 

을 인코딩 (전에서 유식 템플릿을 사용하기 때문에이, 똑똑한를 통해 이루어졌다 자바 스크립트에 전달 된 JSON 내 응용 프로그램).

$smarty->assign('array_json', $array_json); 

는 그 다음 유식 템플릿 파일에, 나는 똑똑한 배열 중 자바 스크립트 배열 생성 :

var prd_array={$array_json}; 

을하고 계속 : 위를 설명하기 위해

for (var product_id in prd_array) { 
      if(product_id == id) { 
       for (var variant_id in prd_array[product_id]) {      
        for (var some_attribute_id in prd_array[product_id][variant_id].attributes)  {       
         var variant_title = prd_array[product_id][variant_id].attributes[some_attribute_id].attribute_name;       
         document.myfrm.myselect.options[document.myfrm.myselect.options.length]=new Option("variant_title, variant_id, true, false);        
        } 
       } 
       break; 
      }    
     } 

, 나는 반복 중첩 된 루프를 사용하여 다차원 배열의 더 깊은 레벨로 이동하여 사용자가 선택한 제품의 변형의 속성 값을 가져옵니다.'id'은 사용자가 선택한 제품 ID 값이며 모든 product_id 값과 비교되며 일치 할 경우 특정 제품의 변형이 atttributes 속성과 함께 반복되며 인덱스는 항상 some_attribute_id 인 하나의 요소와 속성은 attribute_name이며 동적으로 채워진 선택 메뉴에 표시 할 값 중 하나입니다 (variant_id 값과 함께).