function filter_list(l) {
var count = l.length;
console.log('the count is:', count);
function loop() {
for (var i = 0; i < count; i++) {
var type = (typeof l[i]);
if (type == 'string') {
l.splice(i, 1);
console.log('the list is', l);
filter_list(l);
} else {
console.log('this item is', l[i], 'the list is', l);
}
}
}
loop()
}
filter_list([1, 2, 'a', 'c', 'd']);
По существу, это получить работу, однако для окончательного цикл, я не знаю, почему он проходит через него 3 дополнительных раз? Кто-нибудь сможет пролить свет на это?
вы изменить массив с 'splice', но' count' остается неизменным. – usr2564301
, если вы соединяете элементы с массивом, вам лучше пересечь список в обратном порядке, тем самым вы не пытаетесь получить доступ к элементу по индексу, который не существует, поскольку почему он работает несколько раз .. когда вы вызываете 'filter_list (l)' внутри вашего оператора if, вы начинаете цикл снова и снова, лучше либо переходить в обратном порядке, как указано выше, либо помещать оператор 'break' после вызова' filter_list (l) ', который предотвратит продолжение цикла for – haxxxton
Почему вы одновременно используете итерацию и рекурсию? Сделайте то или другое, а не то и другое. – Barmar