Tôi biết rằng có rất nhiều chủ đề như thế này. Và tôi biết những điều cơ bản: .forEach()
hoạt động trên mảng gốc và mảng .map()
mới.
Trong trường hợp của tôi:
function practice (i){
return i+1;
};
var a = [ -1, 0, 1, 2, 3, 4, 5 ];
var b = [ 0 ];
var c = [ 0 ];
console.log(a);
b = a.forEach(practice);
console.log("=====");
console.log(a);
console.log(b);
c = a.map(practice);
console.log("=====");
console.log(a);
console.log(c);
Và đây là đầu ra:
[ -1, 0, 1, 2, 3, 4, 5 ]
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
undefined
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
[ 0, 1, 2, 3, 4, 5, 6 ]
Tôi không hiểu tại sao lại sử dụng practice
giá trị thay đổi của b
thành undefined
.
Tôi xin lỗi nếu đây là câu hỏi ngớ ngẩn, nhưng tôi khá mới trong ngôn ngữ này và những câu trả lời tôi tìm thấy cho đến nay không làm tôi hài lòng.
.map
trả về một mảng mới , trong khi.forEach
không trả về bất kỳ thứ gì . Về cơ bản, nếu bạn muốn lấy một dạng đã sửa đổi của mảng trước đó, bạn sử dụng.map
, nếu không muốn, bạn sử dụng.forEach
.