使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
我试图实现数组中某些元素的首字母大写。我需要跳过以字母c开头的元素。我还需要使用过滤器和映射方法。我在MDN上查看了文档,我不知所措。这是为学校准备的,所以我真的需要理解代码为什么有效;我不仅仅是在寻找答案。这是我的html:使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript,javascript,arrays,dictionary,filter,Javascript,Arrays,Dictionary,Filter,我试图实现数组中某些元素的首字母大写。我需要跳过以字母c开头的元素。我还需要使用过滤器和映射方法。我在MDN上查看了文档,我不知所措。这是为学校准备的,所以我真的需要理解代码为什么有效;我不仅仅是在寻找答案。这是我的html: <div><strong>Sorted Fruit:</strong> <span id="sorted-fruit"></span></div> <div><strong>C
<div><strong>Sorted Fruit:</strong> <span id="sorted-fruit"></span></div>
<div><strong>Capitalized Fruit without Cs:</strong> <span id="capitalized-fruit"></span></div>
分类水果:
不带Cs的大写水果:
这是我的JS:
// (1) Iterate through each fruit type and write it to the console
// using a for loop.
// (2) Use Array's methods "sort" and "join" to print an alphabetically
// sorted comma delimited list of fruit in the span with id "sorted-fruit"
// (3) Use ECMAScript 5 Array methods "filter" and "map" and Array method
// "join" to print out a comma delimited list of fruit that are
// capitalized (just the first letters); skip those that contain the
// letter "c" in them.
(function() {
var fruit = [
"apple",
"orange",
"peach",
"cherry",
"pear",
"apricot",
"banana",
"guava",
"melon"
];
fruit.sort();
var myFruit = fruit.join(', ');
for (i = 0; i < fruit.length; i++) {
console.log(myFruit);
}
document.getElementById('sorted-fruit').innerHTML = myFruit;
// Your code goes here ...
}());
/(1)迭代每种水果类型并将其写入控制台
//使用for循环。
//(2)使用数组的“排序”和“联接”方法按字母顺序打印
//id为“sorted Frient”的范围内水果的排序逗号分隔列表
//(3)使用ECMAScript 5数组方法“过滤器”和“映射”以及数组方法
//“join”可打印以逗号分隔的
//大写(仅首字母);跳过那些包含
//字母“c”在它们里面。
(功能(){
变量水果=[
“苹果”,
“橙色”,
“桃子”,
“樱桃”,
“梨”,
“杏”,
“香蕉”,
“番石榴”,
“甜瓜”
];
水果;
var myFruit=fruit.join(',');
对于(i=0;i
您的第三部分解决方案:
// Filter out entries with the letter 'c'
fruit = fruit.filter(function (el) {
return el.indexOf('c') === -1;
});
// Capitalize the first letter of all remaining strings
fruit = fruit.map(function(string){
return string.charAt(0).toUpperCase() + string.slice(1);
});
但是我想让你把这个解决方案拆开,弄清楚它在做什么。如果你想缩短你需要在代码中编写的内容,那么箭头函数就太棒了
// To capitalize the first letter of remaining words, using 'w' as the variable for each word
const fruit = fruit.map(w => w.charAt(0).toUpperCase() + w.slice(1));
var-fruit=[
“苹果”,
“橙色”,
“桃子”,
“樱桃”,
“梨”,
“杏”,
“香蕉”,
“番石榴”,
“甜瓜”
]
const fruitChanged=fruit.map(w=>w.charAt(0.toUpperCase()+w.slice(1));
console.log(已更改)
您刚刚发布了作业。。。。。你不觉得做那件事而不去做有点懒吗??投票给Close我发布了我的作业,但也包括了我的工作。我能够完成任务1和2。我也花了大约一个小时做研究,并试图解决我自己之前,我张贴在这里。谢谢你的反馈。很抱歉,我完全误读了你的评论,我被这部分搞糊涂了“//你的代码在这里…”我想这是默认设置无法解决的唯一问题他得到了第1部分和第2部分,所以见鬼。我也曾经挣扎过。而且他很诚实。“我在MDN上查看了文档,我不知所措。这是给学校的。”我不知道为什么汉字会出现在这个帖子上。非常讨厌YouTube lolDrake谢谢你的反馈。我真的很感激。我对这里发生的事情感觉很好:fruit=fruit.map(函数(字符串){return string.charAt(0.toUpperCase()+string.slice(1);});对我来说,charAt(0)(这基本上是字符串中第一个字母的索引值,对吗?)然后调用toUpperCase()。string.slice(1)基本上是说,一旦我们到达数组中正在处理的字符串的索引1,就停止,是吗?我真的不理解这一点:fruit=fruit.filter(函数(el){return el.indexOf('c')==-1;});当我们将el作为参数传递到函数中时,我感到困惑。我们如何定义el的价值?这个:return el.indexOf('c')对我来说是有意义的,但是为什么我们要将它与-1进行比较呢?再次感谢你的帮助,德雷克斯@drewtuzzon您不需要通过el,过滤器的工作原理如下(“el”只是数组中的一个元素(函数在数组中迭代,el只是下一个元素init),next el.indexOf('c')===-1;只有当单词不以“c”字符开头时,才会返回true,您可以在此处阅读->