01/10/2018, 10:58
For..in và for...of javascript?
var arr = [3, 5, 7];
arr.foo = 'hello';
for (var i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (var i of arr) {
console.log(i); // logs 3, 5, 7
}
Đây là đoạn code khiến minh không hiểu ở chỗ
for (var i of arr) { console.log(i); // logs 3, 5, 7 }
Sao sao ở đây nó không in ra “Hello” nữa mà chỉ dừng lại ở “3, 5, 7” ai giải thích hộ mình với.
Bài liên quan
Nhưng bạn ơi! chỗ for…of
Nó không hiện ra chữ “hello” mình mới thắc mắc đó … <–
Nó chính là vấn đề
Quên
For of nó chỉ duyệt value của các phần từ có key có thể “iterator”, mặc định array các key kiểu số của nó thuộc iterator. Còn thuộc tính foo của bạn tự định nghĩa, nên foo không phải là key có tính chất iterator. Vì vậy for of không in ra value của key foo.
Vậy thì có cách nào in hết ra một lượt không bạn ?
Viết hàm định nghĩa lại iterator thôi bạn, mình cũng ít khi định nghĩa lại. Bạn xem link này nha.
MDN Web Docs
Iterators and generators
Processing each of the items in a collection is a very common operation. JavaScript provides a number of ways of iterating over a collection, from simple for loops to map() and filter(). Iterators and Generators bring the concept of iteration...
Nó có vào đâu mà in ra bạn, máy tính nó cũng thông minh biết bạn nhầm ấy
Xem nhé
//Nó bít ông lập trình viên nhầm nên không add cái hello vào!!!
//nó tự xử luôn không báo biếc gì cả
Nhưng bạn ơi một cái là thuộc tính, một cái là kiểu “string” mà… đánh đồng được à??
Mình mới học cái js này nên có gì sai đừng gạch đá nhé
javascript là thế nó đếch phân biệt bạn ạ
Bạn phải phân biệt cái array
Hay là bạn muốn viết cái này:
Bạn viết thế thì nó hiểu đấy.
Thế à, cám ơn, nhưng nên tránh mấy cái không hợp với logic của mình:cry:
Mình k rõ bạn từ ngôn ngữ nào nhảy sang nhưng cần học lại Array, Object và Function trong js.
Khi bạn viết
arr.foo = "hello"
nghĩa là gì và nó khác gì vớiarr.push("hello")
, (arr["foo"] = "hello"
thì có khác k?)Việc dùng for of hay for in hay for thường không phải là câu hỏi chính xác cho vấn đề bạn mắc phải.
Hi bạn,
Mình cũng có viết một bài về vòng lặp trong Javascript, bạn có thể đọc thêm nhé:
Bạn ơi cho mình hỏi chút là mình gặp lỗi khi sử dụng từ khóa “let”
Bạn có thể giúp mình với k?
Thêm
"use strict"
vào đầu file.Thanks bạn nha