在循环期间获取唯一值

时间:2013-08-15 22:41:00

标签: javascript arrays loops

我循环遍历一个数组并获取我需要的数据。

 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次。我只有一个在我的桌子上显示一次。我怎样才能完成这个?

Final Array的构造如此;就像一个对象:

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

        });

3 个答案:

答案 0 :(得分: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 ...)

答案 1 :(得分: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;
     }
  }

答案 2 :(得分: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;
}

这将阻止重复数据的输入。