我有一个简单的函数,我要使用大小写混合的字符串数组,并用首字母大写输出数组中的每个值。
当我使用'return'元素调用函数时,控制台日志仅在数组->'London'中产生第一个值。
如何为每个字符串生成首字母大写的整个城市???
注意:当我用console.log(result)替换return时,函数调用可以顺利进行,但是在控制台中,在数组以大写字母输出结果之后,“ undefined”值类型对应于该行'console.log(capFirstLetter(cities));'
let cities = ['lonDon', 'ManCHESTer', 'BiRmiNGHAM', 'liVERpoOl'];
let capFirstLetter = (list) => {
for(let i = 0; i < list.length; i++) {
let input = list[i].toLowerCase();
let firstLetter = input[0];
let result = input.replace(firstLetter, firstLetter.toUpperCase());
return restult;
}
}
console.log(capFirstLetter(cities));
注意:这就是控制台中的内容,我用console.log(result)替换了返回结果
London ->script.js:60
Manchester ->script.js:60
Birmingham ->script.js:60
Liverpool->script.js:60
undefined ->script.js:64
script.js.60与行console.log(result)相关联& script.js.64与该行相关
答案 0 :(得分:0)
您应该使用.map
将一个数组转换为另一个数组-在。map
回调中返回新的数组元素:
let cities = ['lonDon', 'ManCHESTer', 'BiRmiNGHAM', 'liVERpoOl'];
let capFirstLetter = (list) => {
return list.map((input) => {
input = input.toLowerCase();
let firstLetter = input[0];
return input.replace(firstLetter, firstLetter.toUpperCase());
console.log(result);
});
}
console.log(capFirstLetter(cities));
或者,为了更加简洁,请使用正则表达式和替换函数:
const cities = ['lonDon', 'ManCHESTer', 'BiRmiNGHAM', 'liVERpoOl'];
const capFirstLetter = list => list.map(
(input) => input.replace(
/(.)(.*)/g,
(_, firstLetter, rest) => firstLetter.toUpperCase() + rest.toLowerCase()
)
);
console.log(capFirstLetter(cities));
使用旧式for
循环,您必须在每次迭代结束时push
到新数组:
let cities = ['lonDon', 'ManCHESTer', 'BiRmiNGHAM', 'liVERpoOl'];
let capFirstLetter = (list) => {
const newArr = [];
for(let i = 0; i < list.length; i++) {
let input = list[i].toLowerCase();
let firstLetter = input[0];
let result = input.replace(firstLetter, firstLetter.toUpperCase());
newArr.push(result);
}
return newArr;
}
console.log(capFirstLetter(cities));
答案 1 :(得分:0)
当我使用'return'元素调用函数时,控制台日志仅在数组->'London'中产生第一个值。
发生这种情况是因为您的return
在第一个循环之后停止了迭代(for
),所以result
仅包含第一个城市。
注意:当我用console.log(result)替换return时,函数调用可以顺利进行,但是在控制台中,在数组以大写字母输出结果之后,“ undefined”值类型对应于该行console.log(capFirstLetter(cities));
发生这种情况是因为您的函数未返回任何内容(在JS中,这意味着该函数将返回未定义的值。)
要使其正常工作,您可以使用地图:
let cities = ['lonDon', 'ManCHESTer', 'BiRmiNGHAM', 'liVERpoOl'];
let capFirstLetter = list => list.map(city => city.charAt(0).toUpperCase() + city.slice(1).toLowerCase());
console.log(capFirstLetter(cities));