charAt () дает мне плохой вывод - PullRequest
0 голосов
/ 23 октября 2018

Я делаю язык программирования, и где точки с запятой в javascript, косые черты в моем.

Вот код:

        document.getElementsByTagName("input")[0].addEventListener("change", function() {
            var file = document.getElementsByTagName("input")[0].files[0];
            var reader = new FileReader();
            reader.onload = function(evt) {
                var lines = [];
                var data = evt.target.result;
                var i;
                var j;
                for (i = 1; i <= data.length; i++) {
                    var search = data.charAt(i);
                    if("/" === search){
                        lines.push(i);
                    }
                }
                document.body.innerText = lines.toString();
            };
            reader.readAsText(file, "UTF-8");
        }, false);
<body>
    <input type="file">
    <div>

    </div>
</body>

Должен выводить косую черту, но каждый раз, когда я запускаю файл, он сообщает мне положение символа после косой черты.

Я знаю, что могу использовать некоторую математику, чтобы избавиться от нее, но почему это происходит?

Спасибо, EthanZoneCoding

1 Ответ

0 голосов
/ 23 октября 2018

Перво-наперво: charAt() начинается с нуля, поэтому вы должны начать свою итерацию с 0 и закончить, прежде чем доберетесь до data.length:

for (i = 0; i < data.length; i++) {
    /* ... */
}

Если вы хотите хранить индексы, основанные на одном, а не на индексах, начинающихся с нуля, достаточно просто добавить 1:

lines.push(i + 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...