簡體   English   中英

如何使此功能更有效?

[英]How can I make this function more efficient?

我具有信用卡類型的此數據結構。

使hasTransFee更有效率將是一個很好的選擇。 如果我開始將存儲卡等添加到此列表中,它可能會變得很大,因此它越快越好。

有人有什么建議嗎?

$scope.creditCards = [
    { name: 'VISA DEBIT/DELTA', value: 'DEL', transactionFee: false},
    { name: 'VISA CREDIT', value: 'VIS', transactionFee: true },
    { name: 'MASTERCARD CREDIT', value: 'MSC', transactionFee: true },
    { name: 'MASTERCARD DEBIT', value: 'MCD', transactionFee: false },
    { name: 'MAESTRO', value: 'MAE', transactionFee: false },
    { name: 'SWITCH', value: 'SWI', transactionFee: false },
    { name: 'VISA ELECTRON', value: 'ELC', transactionFee: false },
    { name: 'SOLO', value: 'SOL', transactionFee: false }
  ];


var hasTransFee = function(cardType) 
{
 for (var i=0; i < $scope.creditCards.length; i++) {
    if($scope.creditCards[i].value==cardType && $scope.creditCards[i].transactionFee == true){
     return true;   
    }
  }
  return false;
}

value似乎是一個唯一的標識符,如果是這種情況,您可以將“信用卡”存儲在一個object ,如下所示:

$scope.creditCards = {
    'DEL': { name: 'VISA DEBIT/DELTA', transactionFee: false},
    'VIS': { name: 'VISA CREDIT', transactionFee: true },
    'MSC': { name: 'MASTERCARD CREDIT', transactionFee: true }
  };

然后,您甚至不需要檢查信用卡是否有transactionFee ,如果您仍想擁有一個功能,則該功能應如下所示:

var hasTransFee = function(cardType){
  return $scope.creditCards[cardType].transactionFee;
}

旁注:這更適合CodeReview

嘗試這個:

var hasTransFee = function(cardType)
{
    var thecard;
    $scope.creditCards.some(function(item) {
        return item.value == cardType && (thecard = item);
    });
    return thecard && thecard.transactionFee;
};

這只會根據需要進行迭代,以找到具有正確類型的卡,而不會進行進一步的操作(如果找到了卡但不收費,您的原始代碼將繼續掃描整個陣列)。

重要提示:僅ONE =登錄&& thecard = item 這是故意分配 ,以使最終return工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM