[英]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.