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

        });
4

3 回答 3

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 ...)

于 2013-08-15T22:43:56.390 回答
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;
     }
  }
于 2013-08-15T22:51:13.183 回答
0

你想要的可能是一个Set。(请参阅zakas 以了解 ES6 实现。要使用 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;
}

这将防止输入重复数据。

于 2013-08-15T23:04:17.923 回答