У меня есть эта структура данных типов кредитных карт.Как сделать эту функцию более эффективной?
Было бы неплохо сделать 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;
}
Если у вас возникли проблемы с выполнением кода, сделать некоторые профилирование и определить, где медленный p искусства. До тех пор вы не должны беспокоиться о преждевременной оптимизации. –
Уверенный выглядит так, что 'значение' каждого будет делать хороший ключ объекта, нет? Тогда петля не требуется вообще. Это будет просто «card_values [cardType]». –
Задайте значение как ключ хеша, затем просто верните creditCards [key] .transactionFee. Не требуется итерации – allenhwkim