Почему string.split () ведет себя по-разному для регулярных выражений? - PullRequest
2 голосов
/ 19 июня 2010

В JavaScript, если я запускаю следующий код:

<script type="text/javascript">
var nameStr = 'Chris Kate Steve';
var names = nameStr.split(/[ ]/);
var names2 = nameStr.split(' ');

for (var i in names)
{
    alert(i);
}

for (var i in names2)
{
    alert(i);
}
</script>

Это предупредит:

0

1

2

Индекс

ввод

Для первого набора и:

0

1

2

Для второго сета.

Есть идеи, почему это так?

Ответы [ 2 ]

4 голосов
/ 19 июня 2010

for...in перебирает свойства объекта & ndash; использование его с массивами ненадежно, и его следует избегать. Используйте for(var i=0; i < names.length; i++), и ваша проблема будет решена.

Просто split возвращает дополнительные свойства для результата с помощью регулярного выражения.

1 голос
/ 19 июня 2010

split метод со строкой в ​​качестве входных данных возвращает массив подстрок.Таким образом, возвращенный объект Array имеет только элементы в качестве своего содержимого. Метод

split с регулярным выражением в качестве входных данных возвращает объект Array, у которого есть подстроки в позициях числового индекса, а также строка ввода иИндекс первого совпадения хранится в соответствующих им свойствах (как и возвращаемое значение функции string.match() / regex.exec()), поэтому свойства input и index.

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