Как выполнить итерацию в коллекцию объектов класса в node.js

#node.js #es6-class

#node.js #es6-класс

Вопрос:

У меня есть два класса one и two

 class One {
  constructor(field1, field2) {
    this.field1 = field1;
    this.field2 = field2;
  }
}
module.exports = one;

class Two {
  constructor(field11, field22, list) {
    this.field11 = field11;
    this.field22 = field22;
    this.list = list;
  }
  add(one) {
    this.list.push(one);
  }
}

module.exports = Two;

  

Третий класс импортирует оба класса

 const one= require('./one.js');
const two= require('./two.js');
  

Теперь у меня есть функция, которая создает объект второго класса и добавляет некоторые значения, такие как,

 two = new two();
two.add(new one(1,1000)); 
two.add(new one(2,2000));

console.log(two.list); 
  

////список — это коллекция объектов первого класса
До этого момента все работает нормально, я получаю коллекцию

Мой запрос заключается в том, как выполнить итерацию по коллекции, например, я хочу получить доступ two.list[0].field1
// не удается получить свойство field1

Ответ №1:

Попробуйте это:

 class One {
    constructor(field1, field2) {
        this.field1 = field1; this.field2 = field2;
    }
}

class Two {
    constructor(field11, field22, list = []) {
        this.field11 = field11; this.field22 = field22;
        this.list = list
    }

    add(one) {
        this.list.push(one);
    }
}

two = new Two();
two.add(new One(1, 1000)); 
two.add(new One(2, 2000));

console.log(two.list); 
  

Ответ №2:

В коде есть некоторые проблемы:

  • Именование и скобка неправильно закрываются
  • Параметр списка по умолчанию также записан в неправильном формате

 class One {
  constructor(field1, field2) {
    this.field1 = field1;
    this.field2 = field2;
  }
}

class Two {
  constructor(field11, field22, list = []) {
    this.field11 = field11;
    this.field22 = field22;
    this.list = list;
  }
  add(one) {
    this.list.push(one);
  }
}

two = new Two();
two.add(new One(1,1000)); 
two.add(new One(2,2000));

console.log(two.list[0].field1);   

Обновил ваш код. Попробуйте запустить это

Комментарии:

1. Моя проблема в том, что теперь я могу получить доступ к свойству field1, используя list [i], я не получаю свойство при вводе ‘.’, intellisense не показывает список свойств в классе one, где, поскольку добавление элементов в список работает правильно и может видеть список, two.list

2. Есть вероятность, что в intellisense произошла какая-то неправильная настройка. Ознакомьтесь с документацией редактора