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.

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.

1 Like

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.

var iterable = {
  [Symbol.iterator]() {
    return {
      i: 0,
      next() {
        if (this.i < 3) {
          return { value: this.i++, done: false };
        }
        return { value: undefined, done: true };
      }
    };
  }
};

for (var value of iterable) {
  console.log(value);
}
2 Likes

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é

var arr=[3,5,7];
arr.foo="hello";
console.log(arr);//Array [3,5,7]

//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ả

arr.push('hello');
console.log(arr);//Array[3,5,7,"hello"]
1 Like

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é :blush:

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:

var hs={
      ten:"HoangNew",
      diem:[7,8,9,'giỏi'],
}

Bạn viết thế thì nó hiểu đấy.

1 Like

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:

1 Like

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ới arr.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.

2 Likes

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é:

2 Likes

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.

2 Likes

Thanks bạn nha :blush: :blush: :blush:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?