Hello编写一个函数,将名称转换为缩写。此kata严格使用两个词,并且两个词之间只有一个空格。 这是我的代码。
function abbrevName(name) {
var first;
var last;
var new1 = name.split("")
for (var i = 0; i < new1.length; i++) {
if (new1[i] == new1.toUpperCase) {
first = new1[i]
if (new1[i] == new1.toUppercase && first == defined) {
last = new1[i]
}
return first + "." + last;
}
}
/enter code here
}
abbrevName("Faris Abutaya")
我正在获得不确定的帮助,请
答案 0 :(得分:0)
您正在从函数中获得未定义的信息,因为您需要从中返回一些信息。
尝试在底部附近添加一个return
语句,您将获得输出。您实际上需要返回的东西,我会留给您。
function abbrevName(name) {
var first;
var last;
var new1 = name.split('');
for (var i = 0; i < new1.length; i++) {
if (new1[i] == new1.toUpperCase) {
first = new1[i];
if (new1[i] == new1.toUppercase && first == defined) {
last = new1[i];
}
return first + '.' + last;
}
}
return new1;
}
abbrevName('Faris Abutaya');
答案 1 :(得分:0)
编写的代码有很多错误。
console.log( "h".toUppercase );
//H
3。您还应该检查是否已定义first。
function abbrevName(name) {
var first;
var last;
var new1 = name.split("");
for (var i = 0; i < new1.length; i++) {
if (new1[i] === new1[i].toUpperCase() && new1[i] != " ") {
if(first == undefined){
first = new1[i];
}else if (new1[i] == new1[i].toUpperCase() && first != undefined){
last = new1[i];
return first + "." + last ;
}
}
}
}
abbrevName("Faris Abutaya")
//F.A
-使用RegEx这样做会更好。因为您编写的代码仅在用户输入仅包含2个单词的名称并首字母大写的时间内起作用。
答案 2 :(得分:0)
您的代码中的一些问题在此处的注释中指出:
function abbrevName(name) {
var first;
var last;
var new1 = name.split("")
for (var i = 0; i < new1.length; i++) {
if (new1[i] == new1.toUpperCase) {
first = new1[i]
// toUpperCase needs `()` to be called; new1 holds the array, not a letter; `== defined` is invalid
if (new1[i] == new1.toUppercase && first == defined) {
last = new1[i] // this statement will run as soon as first is found (so last = 'F')
}
return first + "." + last; // return happens as soon as first `if` condition is true
}
}
}
abbrevName("Faris Abutaya")
这是修订的代码。请注意,console.log语句有助于调试,因为我们可以看到脚本中各个变量的含义。 (要查看浏览器控制台,请使用f12或ctrl + shift + i)
function abbrevName(name) {
const letters = name.split(""); // Renamed new1 to letters
let first ="", last = "";
let firstFound = false, lastFound = false; // New variables
console.log(letters);
for (let i = 0; i < letters.length; i++) {
console.log(letters[i]);
if(letters[i] == letters[i].toUpperCase()){ //Compare letter to letter, not letter to array
if(firstFound == false){
firstFound = true; // Now we have a way to know last is coming
first = letters[i];
console.log("first: " + first);
}
else{ // firstFound is not false
lastFound = true
last = letters[i];
console.log("last: " + last);
}
}
}
return first + "." + last; // return statement moved out of for loop
}
console.log(abbrevName("Faris Abutaya"));