【问题标题】:going through substr with loop and then want to identify the index使用循环遍历 substr 然后想要识别索引
【发布时间】:2011-02-03 08:57:35
【问题描述】:

我试图获取字符串中相应字符的索引号。 我的意思是循环确实可以使用字符串方法charAt()indexOf() 将字符串中的字符视为字符“数组”,对吧?

代码如下:

/** ****** WINDOW ONLOAD EVENT HANDLER **************** */
window.onload = function(){
    // DOM elements
    var theButton = document.getElementById('theButton');
    var form = document.formISBN;
    var numberField = document.getElementById('theInput')

    theButton.onclick = function(){
        var number = numberField.value;
        console.log(number)
        controlNr = calculControlNr(number);
        // console.log(controlNr);
    }
}

function calculControlNr(number) {
    number = number.replace(' ','','g');
    number = number.replace('-','','g');
    var sum = 0;
    var sumEven = 0;
    var sumUneven = 0;
    var factor = 3;
    var numberExtract = number.substr(0,11);

    console.log(numberExtract.length)
    for (var i = 0; i < numberExtract.length; i++) {
        console.log(numberExtract.indexOf(numberExtract.charAt(i)));
    }
}

【问题讨论】:

  • 欢迎来到 Stack Overflow!是的,您可以遍历字符串中的字符并使用charAt 来检索它们。您能否更具体地说明您的问题是什么?我很想帮忙,但我不确定你在问什么。
  • 您好,感谢您的热烈欢迎!我的目标是识别字符串中每个字符的索引号(就像在数组中一样),这样我就可以从字符串中取出字符并使用这些字符在循环中使用 parseInt() 进行计算。 这个我想将索引号作为控制台输出查看的方式。索引号应该是 0,1,2,3,但现在控制台输出类似于 7,3,2,2,这有点奇怪。
  • 其他地方一定有错误。如果我隔离该循环并为numberExtract 提供一个虚拟值,那么它可以完美运行。

标签: javascript arrays string


【解决方案1】:

怎么样

var numberExtract = number.split('');

console.log(numberExtract.length)
for (var i = 0; i < numberExtract.length; i++) {
    if (i==11) break; // you only wanted the first 11?
    console.log(i+':'+numberExtract[i]);
}

但是您的代码仍然可以正常工作。 这是我为测试它所做的工作

<script>
/** ****** WINDOW ONLOAD EVENT HANDLER **************** */
window.onload = function(){
    // DOM elements
    var theButton = document.getElementById('theButton');
    var form = document.formISBN;
    var numberField = document.getElementById('theInput')

    theButton.onclick = function(){
        var number = numberField.value;
        alert(number)
        controlNr = calculControlNr(number);
        // alert(controlNr);
    }
}

function calculControlNr(number) {
    number = number.replace(' ','','g');
    number = number.replace('-','','g');
    var sum = 0;
    var sumEven = 0;
    var sumUneven = 0;
    var factor = 3;
    var numberExtract = number.substr(0,11);

    alert(numberExtract.length+':'+numberExtract);
    for (var i = 0; i < numberExtract.length; i++) {
        alert(i+':'+numberExtract.indexOf(numberExtract.charAt(i)));
    }
}
</script>
<form name="formISBN">
<input id="theInput" type="text" value="01234567890-A A" />
<input id="theButton" type="button" value="click"/>
</form>

【讨论】:

  • 太棒了!正是我想要的。 11 个限制指向我正在使用的字符数量,因为该练习包含验证 ISBN-13 数字。第 13 个数字(即索引 12)不是用来计算的数字。我会及时发布演变过程。
  • 看起来我对股票对象及其方法的基本知识需要更多培训。很高兴知道 split() 方法将字符串转换为数组而不是 substr()。
  • 是的,但是当您使用 charAt 时,substr(我从不使用,我使用 substring)会起作用,因为 charAt 适用于您从 substring 获得的字符串。我的建议更容易理解,因为你从字符串中得到了一个实际的数组——但你的代码也应该可以工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
相关资源
最近更新 更多