2013-08-15 5 views
0

배열을 반복하고 필요한 데이터를 가져 오는 중입니다.루프 동안 고유 값 가져 오기

for (var i = 0; i < finalArray.length; i++) { 

    var merchName = finalArray[i].merchName; 
    var amName = finalArray[i].amName; 
    var amEmail = finalArray[i].amEmail; 
    var txnID = finalArray[i].transID; 
    var transAccount = finalArray[i].transAccount; 
} 

이 시점에서 내가하려는 것은 루프의 고유 한 데이터 만 표시하는 것입니다.

예를 들어 var transAccount는 배열에 5 번있을 수 있습니다. 한 번만 내 식탁에 표시 할 수 있습니다. 어떻게 이것을 성취 할 수 있습니까?

최종 배열은 다음과 같이 구성됩니다. 단지 개체로 : 확신하는 경우, merchName에서 데이터가 동일 amName 또는 다른 필드 없을 것

finalArray.push({ 
      transID: tmpTrans, 
      transAccount: tmpAccount, 
      amEmail: amEmail, 
      merchName: merchName, 
      amPhone: amPhone, 
      amName: amName 

     }); 
+0

당신이 보여줄 수'finalArray'가 어떻게 구성되는지 – Teemu

+0

'finalArray.push ({ TRANSID :.? tmpTrans을 transAccount : tmpAccount, amEmail : amEmail, merchName : merchName, amPhone : amPhone, amName : a 이름이 }); – SBB

+0

'transAccount'가 배열에 5 번 나타나면 프로그램에서 테이블에 표시 할 값을 선택 하시겠습니까? 첫 번째 사건은? 마지막? – Stuart

답변

0
var merhcData = {}; 
var amName = {}; 
// and so on 

for (var i = 0; i < finalArray.length; i++) { 
    merchData[finalArray[i].merchName] = finalArray[i].merchName; 
    amName[finalArray[i].amName] = finalArray[i].amName; 
    // and so on 
} 

- 당신은 대신에 하나 개의 데이터 객체를 사용할 수있는 몇 가지 (merchData, amName ...)

+0

조금 설명해 주시겠습니까? for 루프의 모든 데이터를 사용하여 테이블을 만들고 있지만 고유 한 상품 이름을 원합니다. – SBB

+0

오, 죄송합니다. 이것은 자바 스크립트에서 'set'데이터 구조를 모방 한 단순한 배열입니다 (예 : http : //www.javascriptexamples.org/2011/01/17/how-to-implement-a-set-in-javascript /). 고유 한 상품 이름을 원하면 index : data [ 'merchName'+ i] – yname

+0

@CarlHussey를 입력하십시오.이 경우 관련없는 코드를 질문에 포함 시켰습니다. 관련된 것은'finalArray'에서 객체를 채우는 코드와 데이터입니다. – Teemu

0
var allTransAccount = {}; 

    for (var i = 0; i < finalArray.length; i++) { 

    var merchName = finalArray[i].merchName; 
    var amName = finalArray[i].amName; 
    var amEmail = finalArray[i].amEmail; 
    var txnID = finalArray[i].transID; 

    var transAccount = finalArray[i].transAccount; 
    if(allTransAccount[finalArray[i].transAccount]) { 
     var transAccount = ''; 
    } 
    else { 
     allTransAccount[transAccount] = true; 
    } 
    } 
+0

이 루프 측면에서 각 레코드에 대한 테이블 행을 만들고 내 테이블에 추가하고 있습니다. 그래서 상인 이름이 존재하지 않는다면, {// 여기에 코드를 추가하십시오} else {// 아무 것도 포함하지 않기 때문에 그냥 행을 추가하는 것을 건너 뛰었습니다} – SBB

+0

@CarlHussey 다음에 'allTransAccount [transAccount] = true ; '행을 추가합니다. – aperl

0

당신이 원하는 것은 Set입니다. (zakas for ES6 implementation를 참조하십시오.이 사용하는 자바 스크립트를 에뮬레이션하려면 계정이 좋은 내기 것 (당신의 특성 중 하나로 키와 객체를 사용할 수, aperl 말했듯이) 테스트하는 원시 배열을 사용하기 전에.

var theSet={}; 

for (var i = 0; i < finalArray.length; i++) { 
var transAccount = finalArray[i].transAccount; 
var merchName = finalArray[i].merchName; 
var amName = finalArray[i].amName; 
var amEmail = finalArray[i].amEmail; 
var txnID = finalArray[i].transID; 

if(!theSet[transAccount]){ 
    //add to your table 
    theSet[transAccount]===true; 
} 

이 중복 데이터의 항목을 방지 할 수

관련 문제