3

好的,我想在下面有一个 jscript

$(document).ready(function(){
    var str = 'post'; //the subject string
    var arr =[0,2]; //to uppercase character index 0 and 2

    str = str.split("");
    for(var i = 0; i < str.length; i++){
        if($.inArray(i,arr)){
            str[i] = str[i].toUpperCase();
        }
    }
    str = str.join('');
    alert(str);
    //the result must be PoSt
});

你可能会看到它在这里运行

http://jsfiddle.net/laupkram/WfUUp/ ​</p>

现在我想要的是提供一个主题字符串和一个数组。

主题字符串是要处理的字符串,数组包含将字符串中的字符索引表示为大写的数值。

我是否错过了我的脚本中的某些内容,这就是我得到不理想结果的原因?

4

4 回答 4

3
$(document).ready(function() {
    var str = 'post'; //the subject string
    var arr = [0, 2]; //to uppercase character index 0 and 2
    str = str.split("");
    for (var i = 0; i < arr.length; i++) {
        if (str[arr[i]]) {
            str[arr[i]] = str[arr[i]].toUpperCase();
        }
    }
    str = str.join('');
    alert(str);
    //the result must be PoSt
});
于 2012-09-05T09:05:31.310 回答
3

检查$.inArray的文档。它返回找到或未找到的元素的索引-1

$(document).ready(function(){
    var str = 'post'; //the subject string
    var arr =[0,2]; //to uppercase character index 0 and 2

    str = str.split("");
    for(var i = 0; i < str.length; i++){
        //CHANGE HERE
        if($.inArray(i,arr) != -1){
                          //^^ change this
            str[i] = str[i].toUpperCase();
        }
    }
    str = str.join('');
    alert(str);
    //the result must be PoSt
});

​</p>

于 2012-09-05T09:08:19.403 回答
1

2 我在这里看到错误的事情:

  1. 不需要splitstr,你可以正常循环。

  2. inArray() 弄错了。以下来自jquery api 的 inArray片段

$.inArray() 方法类似于 JavaScript 的本机 .indexOf() 方法,因为它在 > 找不到匹配项时返回 -1。如果数组中的第一个元素与值匹配,则 $.inArray() 返回 0。

因此,正如inArray为未找到的索引返回 -1 一样,您if的声明正在变为正确,因此您得到的结果为“PoST”。

于 2012-09-05T09:09:50.920 回答
1

我会将其重写为

var str = 'post'; //the subject string
var arr =[0,2]; //to uppercase character index 0 and 2

str = str.split("");
for(i = 0; i < arr.length; i++){
  str[arr[i]]=str[arr[i]].toUpperCase();

}
str = str.join('');
alert(str);

http://jsfiddle.net/NBBgz/

于 2012-09-05T09:12:42.570 回答