首页 > 解决方案 > 将每个其他数组元素的第一个字母大写

问题描述

我有一个元素数组,["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' ]

标签: javascriptarraysstringalgorithmmethods

解决方案


映射而不是过滤 - 在回调内部,如果是偶数,则返回大写部分,否则返回原始字符串:

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"]));


推荐阅读