0 là nhận bỏ qua
Bạn đang biến đổi (thay đổi) mảng trong khi bạn đang iterating qua nó. Đây là một chương trình không đi.
Hãy xem qua ...
i = 0 và 2 là chẵn và được ghép, mảng của bạn bây giờ là [5, 9, 14, 0, 1, 3, 6, 7]
i = 1 và chúng tôi thậm chí không kiểm tra 5 có trong chỉ mục 0 bây giờ ... chúng tôi hiện đang kiểm tra 9 là số lẻ, tốt
i = 2 và 14 là ngay cả và được nối, mảng của bạn bây giờ [5, 9, 0, 1, 3, 6, 7]
i = 3 và 0 bị bỏ qua (vì 0 nằm trong chỉ mục 2 bây giờ), 1 là lẻ, tốt
i = 4 là số lẻ mỹ
i = 5 là chẵn và được ghép
i = 6 là số lẻ mỹ
gì bạn thực sự muốn là này ...
Array.prototype.filter = function(func) {
var result = new Array();
for (var i = 0; i < this.length; ++i)
if (func(this[i]))
result.push(this[i]);
return result;
}
values = [2, 5, 9, 14, 0, 1, 3, 6, 7];
odd_only = values.filter(function(x) { x % 2 != 0; });
Bạn không lặp lại tất cả các giá trị, bạn phải lặp lại vì mảng được lập lại trên mỗi mối nối. – bfavaretto
có cảm giác có thể xảy ra, nhưng không thiết lập trường hợp thử nghiệm đủ tốt ... nhưng mẹo hay về việc lặp lại +1! – user1766760
muốn số nguyên lẻ? [2, 5, 9, 14, 0, 1, 3, 6, 7] .filter (/./. Test,/[13579] $ /) – dandavis