繁体   English   中英

将每个其他数组元素的第一个字母大写

[英]Capitalize first letter of every other array element

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

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

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

您可以使用一个简单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"]));

尝试这个:

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

我通过数组 map 并且如果元素的索引是偶数(这是因为索引从 0 开始,所以当我们从 1 开始计数时它为我们翻转)然后返回第一个字母大写的元素,如果它是奇数索引,则返回元素本身。

 function alts(arr) { return arr.map((item, index) => { if (index % 2 === 0) { return item.charAt(0).toUpperCase() + item.substr(1); } else { return item } }); } console.log(alts(["apple", "cherry", "raspberry", "banana", "pomegranate"])); // Just returns [ 'apple', 'raspberry', 'pomegranate' ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM