我有一个元素数组,["apple", "cherry", "raspberry", "banana", "pomegranate"],我希望它能够使每个奇怪的元素都大写:["Apple", "cherry", "Raspberry", "banana", "Pomegranate"]。
我可以大写数组中的每个元素,也可以过滤掉每个奇数元素,但不能同时进行(即过滤只显示奇数元素)。
是否有人对此有任何办法和/或建议?我见过关于大写其他字母、检索其他数组元素等的问题,但与我所问的完全不同(但我仍在寻找)。
function alts(arr) {
const newArr = arr.filter((el, idx) => {
if (idx % 2 === 0) {
return arr.map(a => a.charAt(0).toUpperCase() + a.substr(1));
}
})
return newArr;
}
console.log(alts(["apple", "cherry", "raspberry", "banana", "pomegranate"]));
// Just returns [ 'apple', 'raspberry', 'pomegranate' ]
发布于 2021-02-13 22:01:01
试试这个:
function alts(arr) {
return arr.map((el, idx) => {
return idx % 2 == 0 ? el.charAt(0).toUpperCase() + el.substr(1) : el;
})
}
console.log(alts(["apple", "cherry", "raspberry", "banana", "pomegranate"]));
我在数组中映射,如果元素的索引是偶数(这是因为索引从0开始,所以当我们从1开始计数时,它会被翻转),然后返回第一个字母大写的元素,如果它是一个奇怪的索引,那么返回元素本身。
发布于 2021-02-13 21:59:08
映射而不是过滤--在回调内部,如果返回大写部分,则返回原始字符串:
function alts(arr) {
return arr.map((str, i) => i % 2 === 1 ? str : str[0].toUpperCase() + str.slice(1));
}
console.log(alts(["apple", "cherry", "raspberry", "banana", "pomegranate"]));
发布于 2021-02-13 21:59:48
您可以使用简单的for-loop,如下所示:
function alts(arr=[]) {
const newArr = [...arr];
for(let i = 0; i < newArr.length; i+=2) {
const current = newArr[i];
if(current)
newArr[i] = current.charAt(0).toUpperCase() + current.substr(1);
}
return newArr;
}
console.log(alts(["apple", "cherry", "raspberry", "banana", "pomegranate"]));
https://stackoverflow.com/questions/66190317
复制相似问题