Map方法实现所有EXCEPT最后一个数组项

时间:2016-09-27 21:50:07

标签: javascript arrays

我正在处理一个带有字符串的挑战,然后返回所有大写字母的字符串,元音的一些替换/替换,并且有“!!!!”在每个单词之后。

function gordon(a){
return a.split(" ").map(function(x){return x.replace(/[aA]/g,"@").replace(/[aeiou]/g,"*") + "!!!! ";}).join("").toUpperCase();

}

此代码有效,并返回正确的答案,除了最后一个“!!!”末尾的一个空格。

我问这个的主要原因是因为这是我觉得我遇到了很多地图方法或循环。如果你想影响除最后一个元素以外的所有元素,你会怎么做?有没有一种简单的方法可以实现这一目标?

2 个答案:

答案 0 :(得分:4)

由于您希望加入后之间的空间,请将其放在.join()来电而不是!!!!之后。

function gordon(a){
    return a.split(" ")
        .map(function(x){
            return x.replace(/[aA]/g,"@").replace(/[aeiou]/g,"*") + "!!!!";
        })
        .join(" ")
        .toUpperCase();
}

.join()的参数是当每个数组元素连接到结果字符串时放在它们之间的分隔符。

答案 1 :(得分:0)

arr.map回调函数可以接受数组中的当前项,索引和调用它的数组。因此,您可以相应地检查正在操作的项目的索引。

var arr = [1,2,3,4];
var map = arr.map(function(current, index, arr){
 if(index == arr.length - 1){
    console.log('boom');
 }
 else
 {
   console.log(current);
 }     
});

//output: 1 2 3 boom