我有一组元素,[“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”],我希望每个奇数元素都大写:[“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”].

我可以大写数组中的每个元素,也可以过滤掉每个奇数元素,但不能同时过滤掉(即过滤只显示奇数元素)。

有人对此有什么方法和/或建议吗?我看到过关于将其他字母大写、检索其他数组元素等的问题,但与我所问的完全不同(但我仍在寻找)。

函数alts(arr){const newArr=arr.filter((el,idx)=>{if(idx%2===0){返回arr.map(a=>a.charAt(0).toUpperCase()+a.substr(1));}})return newArr;}控制台.log(alts([“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”]);//Just returns['apple','raspberry','石榴']

1
  • 你知道输入的偶数索引处是否没有空字符串吗阿珥? 如果你不这样做,你可能想添加一个检查,或者预先对其进行预处理,因为我认为你现有的答案和所有的答案都会抛出一个错误。 评论 2021年2月13日22:13

4个答案4

重置为默认值
2

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

函数alts(arr){返回arr.map((str,i)=>i%2==1?str:str[0].toUpperCase()+str.slice(1));}控制台.log(alts([“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”]);

1

试试这个:

函数alts(arr){return arr.map((el,idx)=>{返回idx%2==0?el.charAt(0).toUpperCase()+el.substr(1):el;})}控制台.log(alts([“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”]);

我通过数组进行映射,如果元素的索引是偶数(这是因为索引从0开始,所以当我们从1开始计数时,它会为我们翻转),则返回首字母大写的元素,如果是奇数索引,则只返回元素本身。

1

函数alts(arr){return arr.map((项,索引)=>{if(索引%2===0){return item.charAt(0).toUpperCase()+item.substr(1);}其他{退货项目}});}控制台.log(alts([“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”]);//Just returns['apple','raspberry','石榴']

1

您可以使用一个简单的用于停止如下:

函数alts(arr=[]){const newArr=[…arr];for(设i=0;i<newArr.length;i+=2){const current=newArr[i];if(当前)newArr[i]=当前.charAt(0).toUpperCase()+当前.subtr(1);}return newArr;}控制台.log(alts([“苹果”、“樱桃”、“覆盆子”、“香蕉”、“石榴”]);

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.