Tôi biết rằng phương pháp forEach
sẽ lặp qua một đối tượng mảng và sẽ bỏ qua tất cả các phần tử mảng là null
hoặc undefined
. Tôi đã một ví dụ dưới đây:Vòng forEach của JavaScript quyết định bỏ qua hoặc lặp qua các phần tử "undefined" và "null" trong một Array như thế nào?
var a = [1,2,3,,5,6];
var b = [1,2,3,undefined,5,6];
var fn = function(arr){
arr.forEach(function(currentValue, index, array){
console.log(currentValue);
});
};
fn(a); //Prints on console (separated by newline): 1 2 3 5 6
fn(b); //Prints on console (separated by newline): 1 2 3 undefined 5 6
Trong ví dụ trên,
- khi
fn(a)
được thực thi, các vòng lặpforEach
bỏ qua các yếu tố thứ 4a[3]
đó là không xác định. - Nhưng khi
fn(b)
được thực hiện, vòng lặpforEach
lặp qua phần tử thứ tưb[3]
cũng không được xác định.
Sự khác nhau giữa a[3]
và b[3]
ở đây là gì? Tại sao vòng lặp forEach
không bỏ qua b[3]
?
có thể trùng lặp của [JavaScript 'trong 'toán tử cho các phần tử \ 'undefined \' trong mảng] (http://stackoverflow.com/questions/22448330/javascript-in-operator-for-undefined-elements-in-arrays) – JJJ
Tiền đề là sai: forEach won không bỏ qua phần tử tại là null hoặc không xác định. Nó bỏ qua các yếu tố không tồn tại chút nào. – JJJ
@JJJ là đúng. Hãy thử '[null,, undefined] .forEach (console.log)'. Nó in 'null', bỏ qua chỉ mục không có giá trị, sau đó in' undefined'. –