2014-04-01 5 views
0

PHP로 좋지만 자바 스크립트는 나에게 좋지 않습니다. 영어도 좋지는 않지만 모든 것을 단계별로 설명하는 것이 가장 좋습니다. 자바 스크립트를 사용하여 통신 서비스 요금을 계산합니다. 나는 PHP에서와 비슷한 논리가 사용되어야한다는 것을 알고 있지만 그렇다면 나는 붙어있다. 루프 내에서 루프 루프 Javascript 루프 내에서 특정 출력을 생성

/prices is json from server as see below. 
var prices = [{"brand":"Airtel (Waridtel) Ug","numbering":"25670","price":"40"}, 
       {"brand":"UTL ug","numbering":"25671","price":"30"}, 
       {"brand":"Airtel Ug","numbering":"25675","price":"40"}, 
       {"brand":"MTN Ug","numbering":"25677","price":"20"}, 
       {"brand":"MTN Ug","numbering":"25678","price":"20"}, 
       {"brand":"Orange Ug","numbering":"25679","price":"30"}, 
       {"brand":"Safaricom Ke","numbering":"25470","price":"30"}, 
       {"brand":"Safaricom Ke","numbering":"25471","price":"30"}] 

사용자

//contacts 
    cdest = '245772306640,256754306640,25471624525,2567825689754,2563989654285,4588623566', 256782658974; 

우리가 브랜드를 찾기 위해 브랜드 접두어를 사용 쉼표 seperation에 문자열에서 여러 전화 번호를 제공합니다. 연락처 접두사가 json의 가격 번호 매기기와 동일한 경우 해당 브랜드가 소유 한 컨택트입니다. 연락처 목록 사용자가 제공하는 브랜드 당 총 접촉 수 및 총 비용을 계산합니다.

예상 출력은 다음과 같습니다. 브랜드 (연락처 번호) : 총 비용 예 MTN 학부 (3) : 60, 에어텔 학부 (1), 사파리 컴 (Safaricom) 애 (1) : 30,

임은 더 어떤 수를 놓지 좋아 국제 가격 (2) :: 기본값,

여기에 매우 두 개의 루프가 혼동되어 있습니다. 어떻게 반복 할 수 있는지 이해할 수 없습니다. 메아리하지만 메신저 PHP 지식의 전송과 지금까지 나는 이중 루프를 만들지 만, 그때 나는 다시 혼란 스럽다.

//explode numbers; 
dest = cdest.split(","); 

// loop through brands and numbers. 
//plan is to create create array like (brand1 =>countbrand1,brand2=>countbrand3, etc) 

cd = Array(); 
for(var i=0; i<dest.length; i++) 
{ 
    $x.each(prices, function(index, m) { 
     if(dest[i].indexOf(m.numbering)==0) 
     { 
      cd[m.brand]+=1; 
     } else 
     cd[International]+=1; 
     }); 
} 

php에서 나는 단순히 cd를 실행하여 출력을 얻습니다. 나는 js를 시도하지만 Javascript에서 배열의 키를 반향시키는 법을 모른다. javascript는 하루 종일 괴롭 히고 있습니다. 좋은 대답을하면 천천히 단계별로 보여주십시오. 임 고맙습니다.

답변

0

당신은 내가 당신의 코드에서 만든이 바이올린을 확인할 수 있습니다. 당신에게 http://jsfiddle.net/GSeZ9/

var prices = [{"brand":"Airtel (Waridtel) Ug","numbering":"25670","price":"40"}, 
       {"brand":"UTL ug","numbering":"25671","price":"30"}, 
       {"brand":"Airtel Ug","numbering":"25675","price":"40"}, 
       {"brand":"MTN Ug","numbering":"25677","price":"20"}, 
       {"brand":"MTN Ug","numbering":"25678","price":"20"}, 
       {"brand":"Orange Ug","numbering":"25679","price":"30"}, 
       {"brand":"Safaricom Ke","numbering":"25470","price":"30"}, 
       {"brand":"Safaricom Ke","numbering":"25471","price":"30"}]; 

var cdest = '245772306640,256754306640,25471624525,2567825689754,2563989654285,4588623566, 256782658974'; 

var dest = cdest.split(","); 

// loop through brands and numbers. 
//plan is to create create array like (brand1 =>countbrand1,brand2=>countbrand3, etc) 

var cd = {}; 
for(var i=0; i<dest.length; i++) 
{ 
    $.each(prices, function(index, m) { 
     // if(dest[i].toString().indexOf(m.numbering.toString()) != -1) 
      //alert(dest[i].indexOf(m.numbering)); 
     if(dest[i].toString().indexOf(m.numbering.toString()) == 0) 
     { 
      if(cd[m.brand] == undefined) 
        cd[m.brand] = 1; 
      else 
       cd[m.brand]+=1; 
     } //else 
      //cd[International]+=1; 
     }); 
} 
for (var key in cd) { 
    alert(key + " = " + cd[key]); 
} 
+0

도와 드릴까요 지금 얻는 유일한 문제는 CD [m.brand] + = 1 – ofumbi

+0

더 고운이 작업을 확인,이 공간 문제가 없었다 그래서를 사용하여 증가하지 브랜드의 값은 손질과 모두 매우 좋아 – ofumbi

0

PHP 배열은 많은 것들에 사용되지만 자바 스크립트 배열에는 키가 없습니다. 객체는 그렇다. prices 변수에있는 것은 객체 배열입니다. 객체를 반복하려면 다음 구문을 사용할 수 있습니다.

for (var key in p) { 
    // do something 
    // the key has the name `key` and to get the value, you 
    // can type p[key] 
} 

이것은 내부 루프입니다. 바깥 고리가 맞아. 이 방법 당신은 루프 이름 dest와 배열 : 외부 루프 우리가 배열에있는 모든 개체를 얻을 이름 member과 변수에 할당됩니다와

for(var i=0; i<dest.length; i++) { 
    var member = dest[i]; 
    // do something with member 
} 

. 그래서 최종 코드는 다음과 같이 보일해야합니다 (당신은 물론, 더 나은 이름을 생각할 수 있습니다) :

for(var i=0; i<dest.length; i++) { 
    var memeber = dest[i]; 
    for (var key in member) { 
     // do something with the keys and values - print them for example. 
    } 
}