2013-08-15 2 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 раз. Я только один, чтобы отобразить это в моей таблице один раз. Как я могу это сделать?

Финальный массив построен таким образом; так же, как объект:

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

     }); 
+0

Можете ли вы показать, как 'finalArray' построен – Teemu

+0

' finalArray.push ({ ТрансИДа:.? tmpTrans, transAccount: tmpAccount, amEmail: amEmail, merchName: merchName, amPhone: amPhone, amName: a mName }); ' – SBB

+0

, если в массиве 5 раз появляется' transAccount', какое значение вы хотите, чтобы программа отображалась в таблице? Первое появление? Последний? – 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 
} 

Если вы уверены, что данные в merchName никогда не будет равна amName или другое поле - вы можете использовать один объект данных вместо нескольких (merchData, amName ...)

+0

Не могли бы вы объяснить это немного? Я создаю таблицу, используя все данные в цикле for, но хочу иметь уникальные имена. – SBB

+0

О, извините. Это простой связанный массив, имитация структуры данных 'set' в javascript (пример: http: //www.javascriptexamples.орг/2011/01/17 /, как к орудию-а-набор-в-JavaScript /). Если вы хотите иметь уникальные имена товаров - просто добавьте индекс: 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

В этом цикле я создаю таблицы строк для каждой записи и добавляю их в свою таблицу. Поэтому я должен сказать, что если имя Merchant не существует, {// добавьте здесь код} else {// это не будет содержать ничего, поэтому он просто пропустил бы добавление строки} – SBB

+0

@CarlHussey, затем в блок else после 'allTransAccount [transAccount] = true ; 'вы добавите строку. – aperl

0

Что вы хотите, скорее всего, Set. (См zakas for ES6 implementation. Для имитации этого с помощью JavaScript, вы можете использовать объект с ключом в качестве одного из свойств (счет будет хорошей ставкой, как сказал 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; 
} 

Это предотвратит запись дубликатов данных

Смежные вопросы