js call()的传参问题 //codewars上遇到的题目

今天在codewars上遇到了这样一个问题,不要脸的我又来问答案了,哈哈。。

clipboard.png

下面是我写的答案:

clipboard.png

运行后:

clipboard.png

好像我的首字母没有转换过来!我觉得应该是call()的传参出的问题,可是我单独打印变量n时,它已经是大写了,还是我继承数组的原型对象时出错了。实在不知是那个地方出了问题,特来求助!!!!求大神指点。

谢谢大家,问题解决了。。贴上一个别人通过的代码。。

clipboard.png

阅读 3.7k
3 个回答

这代码跑得起来吗?
Array.prototype.splice.call第一个参数你要传个数组进去才行,arr[i]是个字符串吧。

splice是数组方法而不是字符串

function generateHashtag(str){
    var arr, i,tempArr;
    if(!str||str.length>140||str.length==0){
        return false;
    }
    arr=str.split(" ");
    for(i=0;i< arr.length;i++){
        tempArr=arr[i].split('');
        Array.prototype.splice.call(tempArr,0,1,tempArr[0].toUpperCase());
        arr[i]=tempArr.join('');
    }
    return '#'+ arr.join('');
}

不明白为什么要Array.prototype.splice.call,楼主能解释一下吗

实现楼主的功能可以用更加直观的方法

var str = "shan de na bian hai de na bian you yi qun da shui bi"
console.log(str);

var strArr = str.split(" ")
var strArrResolved = strArr.map(function(word){
    return word.charAt(0).toUpperCase() + word.slice(1)
})
var strResolved = strArrResolved.join(" ");

console.log(strResolved);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题