Я не понимаю этот код, который я написал [закрыто]

Я новичок и мне нужна твоя помощь ..

это то, что я написал для того, чтобы напечатать «Visa» ... но там написано undefined

после вызова функции, я хотел бы получить возврат «Visa» ... но это не работает ..


function detectNetwork(cardNumber) {
  function visa() {
      let data = ["4","13","16"]
      for (let i of data ) {
        if ( cardNumber[0] === i && cardNumber.length === 19 ) {
          return "Visa"
        }
      }
    }
}

// detectNetwork('4123456789012')

Благодарю вас, ребята, и спасибо, что вы дали хороший экс !! но на самом деле, этот вопрос заключается в том, чтобы сделать функцию detectNetwork ()

Вопрос в том, чтобы


 // The 'Diner's Club' card number always starts with 38 or 39, and is a 14 digit number.

 // 'American Express' card numbers always start with 34 or 37, 15 digits

 // Visa card numbers always start with 4 and are 13, 16, or 19 digits long.

 // MasterCard card numbers are always 16 digits, beginning with 51, 52, 53, 54, or 55.

 // ex) detectNetwork('39345678901234') //  'Diner's Club'
 // ex) detectNetwork('343456789012345') // 'American Express'
 // ex) detectNetwork('4123456789012345678') // 'Visa'
 // ex) detectNetwork ('5112345678901234') // 'MasterCard'

Я просто хочу, чтобы Detect Network () организовывала, какие там есть функции

При заданном номере «detectNetwork» возвращает, является ли переданный номер «Diner's Club», «American Express», «Visa» или «MasterCard»

, это my_code

function detectNetwork(cardNumber) {
    if ( cardNumber.length === 14 ) {
      let num1 = cardNumber.slice(0,2);
        if ( num1 === "38" || num1 === "39" ) {
          return "Diner's Club";
        }
    } else if ( cardNumber.length === 15 ) {
      let num2 = cardNumber.slice(0,2) ;
        if (num2 === "34" || num2 === "37" ) {
          return "American Express";
      } else if (cardNumber.length === 19 || cardNumber.length === 13 || cardNumber.length === 16 ) {
          if ( cardNumber[0] === "4" ) {
          return "Visa";
        } else if ( cardNumber.length === 16 ) {
          let mastData = ["51", "52", "53", "54","55"]; 
            for (let i of mastData ) {
              if (mastData === i ) {
                return "MasterCard"
          }
        }
      }
    }
  }
}

-10
задан JJ_strong 23 August 2019 в 05:28
поделиться

2 ответа

Можно изменить код как ниже:
вложенная функция Визы была опущена, длина числа была увеличена до 19, и console.log был добавлен для показа результата.
, В целом, не полностью ясно, что Вы пытаетесь сделать, Вы хотите знать, является ли номер верным для того, чтобы быть кредитной картой Visa?

function detectNetwork(cardNumber) {
        let data = [4,13,16]
        for (let i of data ) {
          if ( cardNumber[0] == i && cardNumber.length == 19 ) {
          console.log("Visa");
            return "Visa"
          }
        }     
  }
  
   detectNetwork('4123456789012789012')
0
ответ дан 9 September 2019 в 21:05
поделиться

Ваша функция detectNetwork только определяет функцию визы, она не называет или использует свое возвращаемое значение всегда.

для использования возвращаемого значения визы () необходимо и назвать его и использовать возвращенное значение так или иначе.

Просто добавление visa(); к нижней части Вашего обнаруживать сетевую функцию должно функционировать, должен работать на вызывание функции. Тогда необходимо решить то, что Вы хотите сделать с возвращенным значением. Можно присвоить его переменной, зарегистрировать его к консоли, передать его другой функции, просто возвратить его, или любая другая вещь, которую Вы обычно делали бы с возвращенным значением. Некоторые примеры были бы:

   let value = visa(); // Save to variable

   console.log(visa()); // Log return value to console

   doSomething(visa()); // Pass value to another function

   return visa(); // Returns the value from visa
0
ответ дан 9 September 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: