使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript

使用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

我试图实现数组中某些元素的首字母大写。我需要跳过以字母c开头的元素。我还需要使用过滤器和映射方法。我在MDN上查看了文档,我不知所措。这是为学校准备的,所以我真的需要理解代码为什么有效;我不仅仅是在寻找答案。这是我的html:

<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,您可以在此处阅读->