Я работал над тестом JS на Udacity.

строка имени из двух слов, отформатированная с использованием любого сочетания заглавных букв, можете ли вы манипулировать этой строкой, чтобы убедиться, что имя имеет заглавную первую букву, а фамилия полностью заглавная? Предположим, что между именами есть пробел. Например, превращение строки типа «cAMERON PITTMAN» в «Cameron PITTMAN». Ваш ответ должен быть единственной строкой, сохраненной в переменной с именем finalName.

Вот мой входной код:

var name = "AlbERt EINstEiN";
function nameChanger(oldName) {
    var finalName = oldName;
    // Your code goes here!
var firstName = name.slice(0,7);
var firstNameA = firstName.charAt(0);
firstNameA = firstNameA.toUpperCase();
firstName = firstName.toLowerCase();
firstName = firstName.substr(1);
var lastName = name.slice(7);
lastName = lastName.toUpperCase();
finalName = firstNameA + firstName + lastName;
 // Don't delete this line!
    return finalName;
}

// Did your code work? The line below will tell you!
console.log(nameChanger(name));

Консоль возвращает:

08 12 2016 09: 54: 08.533: с неограниченным параллелизмом 08 12 2016 09: 54: 08.764: LOG: 'Albert EINSTEIN'

Я знаю, что мой код не самый оптимизированный, но поскольку он возвращает нужную строку, он должен быть сразу после отправки. Тем не менее, я получил только это:

-> ТЕСТ: nameChanger должен возвращать интернационализированное имя. Вернул правильное имя: FAILED ожидал, что «Альберт Эйнштейн» будет равен «Джеффу Норману»

Что-то не так с моим кодом?

-2
Ha D P 8 Дек 2016 в 13:06

4 ответа

Лучший ответ

Попробуйте как это объяснение в коде по комментариям:

  1. разделить имя и фамилию
  2. получить первую букву имени в верхнем регистре и добавить оставшуюся часть имени в нижнем регистре
  3. добавить второе имя заглавными буквами
function nameChanger(oldName) {
//your code starts here in your case you need to return out variable
var d = oldName.split(" ") // this will return you array of two strings 
var out = d[0][0].toUpperCase() //take the first string first letter capitalize
out += d[0].substr(1).toLowerCase() + " " //add the remaining firstname by lowercase substr will give you sub string from 1 index 
out+= d[1].toUpperCase(); //add the second name by upper case

return out;
}

console.log(nameChanger("AlbeRt Eienstien"))
0
Vinod Louis 8 Дек 2016 в 10:26

Вы должны использовать аргумент в качестве другого уже упомянутого комментатора.
Я не очень изменил ваш код, кстати.

ПРИМЕЧАНИЕ. вы хотите задавать вопросы, которые помогают больше людям, чем просто для ответа на вопрос. :-)

Хорошего дня - надеюсь, вы любите учиться кодировать.


Посмотрите, поможет ли это.

function nameChanger(oldName) {
    var finalName = oldName;
    // Your code goes here!
    var firstName = oldName.split(' ')[0];
    var firstNameA = firstName.charAt(0);
    firstNameA = firstNameA.toUpperCase();
    firstName = firstName.toLowerCase();
    firstName = firstName.substr(1);
    var lastName = oldName.split(' ')[1];
    lastName = lastName.toUpperCase();
    finalName = firstNameA + firstName + ' ' + lastName;
  
    // Don't delete this line!
    return finalName;
}

// Did your code work? The line below will tell you!
console.log(nameChanger('geOff NoRmAn'));
0
jeremiah.trein 8 Дек 2016 в 10:23

Вы можете использовать следующий код для достижения результата.

var name = "cAmEROn PittMAN";
var names = name.split(" ");
var finalname = names[0].toString().substring(0, 1).toUpperCase() + names[0].toString().substring(1,names[0].length).toLowerCase() + " " + names[1].toString().toUpperCase();
console.log(finalname);

Здесь finalname возвращает «Cameron PITTMAN». Используйте split вместо slice, и он вернет оба слова в массиве, и вы можете манипулировать данными так, как вам нужно.

1
Vamsee Krishna 8 Дек 2016 в 10:26

Я думал, что это поможет в будущем:

var name = "AlbERt EINstEiN";

function nameChanger(oldName) {
   var finalName = oldName;
// Your code goes here!
   var names = oldName.split(" "); //Split the string in an array of 2 elements, using the space (" ") as separator.
   names[0] = names[0].slice(0,1).toUpperCase() + names[0].slice(1).toLowerCase(); //Converts first letter into UpperCase + rest of firstname to LowerCase.
   names[1] = names[1].toUpperCase(); //Converts lastname to UpperCase.

   finalName = names.join(" "); //Joins both names into a string separated by a space.

// Don't delete this line!
   return finalName;
};

// Did your code work? The line below will tell you!
console.log(nameChanger(name));
0
missmakita 25 Авг 2017 в 08:57