Javascript (x在y中)循环的jQuery

Javascript (x在y中)循环的jQuery,javascript,jquery,Javascript,Jquery,在下面的代码中,变量“key”没有大写,即使任何其他变量(如steve[j])在调用函数capitaliefirstletter()时替换了“key” 有人能告诉我为什么吗 for(key in aray) { steve = aray[key]; for(j = 0; j < steve.length; j++){ diff = steve[j].slice(key.length); if(diff == ""){

在下面的代码中,变量“
key
”没有大写,即使任何其他变量(如steve[j])在调用函数
capitaliefirstletter()
时替换了“
key

有人能告诉我为什么吗

for(key in aray) {
    steve = aray[key];
    for(j = 0; j < steve.length; j++){
        diff = steve[j].slice(key.length);
        if(diff == ""){
            diff = "_";
        }
        diffs.push(diff);
        var firstLetterUpper = /^[A-Z]/.test(steve[j]);
        if(firstLetterUpper){
            capitaliseFirstLetter(key)
            alert(key])
        }

    }
}
function capitaliseFirstLetter(string){
    return string.charAt(0).toUpperCase() + string.slice(1);
}
for(输入aray){
史蒂夫=阿拉伊[钥匙];
对于(j=0;j
字符串对象按值传递给函数。所以它不会改变,你应该重新赋值


字符串对象按值传递给函数。因此,它不会改变。如果您的目标是将每个单词大写,那么您应该重新指定值。它可以更简单地实现:

JSFiddle:
如果您的目标是将每个单词大写,则可以更简单地执行以下操作:

JSFiddle:

注意:
if(diff==“”)
看起来像是打字错误。这不应该检查单词之间的空格吗?这里还有一个输入错误:
alert(key])
Uncaught ReferenceError:diffs没有定义Steve[j]是字母还是其他字符串?你的
aray
看起来怎么样?多级?diff在前面已经定义,正在检查结尾是否为“er”或“en”或无结尾,diff=”“为无结尾,应替换为“\ux”。这一切都是可行的,不是我面临的问题。警报(键)是一个输入错误,对不起。该数组实际上是多级的,但可以与“key”以外的任何其他变量一起使用。注意:
if(diff==“”)
看起来像一个输入错误。这不应该检查单词之间的空格吗?这里还有一个输入错误:
alert(key])
Uncaught ReferenceError:diffs没有定义Steve[j]是字母还是其他字符串?你的
aray
看起来怎么样?多级?diff在前面已经定义,正在检查结尾是否为“er”或“en”或无结尾,diff=”“为无结尾,应替换为“\ux”。这一切都是可行的,不是我面临的问题。警报(键)是一个输入错误,对不起。数组确实是多层次的,但是可以使用除“key”之外的任何其他变量。您是否尝试使用更改运行代码。。。这不是唯一的问题。我在回答关键问题。我没有被要求修复开发人员的错误你说的重新分配值是什么意思?我尝试了“key1=key”,然后将key1传递给函数,但没有成功。很抱歉输入错误,您必须捕获CapitalieFirstletter()的响应。。。资本家(钥匙);警惕(键)显示键的原始值我认为这对他来说是压倒性的。。。首先,他必须知道“函数返回”的意思是…你有没有试着用你的更改运行代码。。。这不是唯一的问题。我在回答关键问题。我没有被要求修复开发人员的错误你说的重新分配值是什么意思?我尝试了“key1=key”,然后将key1传递给函数,但没有成功。很抱歉输入错误,您必须捕获CapitalieFirstletter()的响应。。。资本家(钥匙);警惕(键)显示键的原始值我认为这对他来说是压倒性的。。。首先,他必须知道“函数返回”意味着…我认为这对他来说是压倒性的。。。首先,他必须知道“函数返回”的意思是……。@florin.prisecariu:我不同意
toTitleCase
是一个黑盒函数。然后是一个“谁在乎它是如何工作的”场景:)我只想将原来大写的单词大写,因此检查var firstLetterUpper=/^[a-Z]/.test(steve[j])@user2343618:对不起,如果满足了测试,那么为什么还要再次将其大写?我必须承认,我很难弄清楚这段代码的作用:)你能解释一下你问题的总体目的吗?@TrueBlueAusie,对不起,我不是指你的解决方案,而是指这张票。。。他在代码中有很多错误,而且在做这些事情之前,他应该学习一些基本的JS…我认为这对他来说是压倒性的。。。首先,他必须知道“函数返回”的意思是……。@florin.prisecariu:我不同意
toTitleCase
是一个黑盒函数。然后是一个“谁在乎它是如何工作的”场景:)我只想将原来大写的单词大写,因此检查var firstLetterUpper=/^[a-Z]/.test(steve[j])@user2343618:对不起,如果满足了测试,那么为什么还要再次将其大写?我必须承认,我很难弄清楚这段代码的作用:)你能解释一下你问题的总体目的吗?@TrueBlueAusie,对不起,我不是指你的解决方案,而是指这张票。。。他在代码中有很多错误,而且在做这些事情之前,他应该先学习一些基本的JS。。。
key = capitaliseFirstLetter(key)
alert(key)
for (key in aray) {
    var steve = aray[key];
    console.log(toTitleCase(steve));
    // if you want to change the aray value
    aray[key] = toTitleCase(steve);
}

function toTitleCase(str) {
    return str.replace(/\w\S*/g, function (txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}