Как получить значение классифицированного объекта из массива - PullRequest
0 голосов
/ 09 мая 2019

Мне нужно жестко закодировать простую функцию foreach, которая console.logs выводит список объектов с одинаковым значением для определенного свойства из массива. но console.log продолжает показывать неопределенное. Я не знаю, что я сделал не так здесь. определен ли класс, вызывающий проблему? Если мне просто нужно работать с классами, как мне решить эту проблему?

class Hive {
     constructor(apiary_name, hive_name, hive_number) {
     this.apiary_name = apiary_name;
     this.hive_name = hive_name;
     this.hive_number = hive_number;
}}

const Hive1_A1 = new Hive(A1, 'My First Hive in A1', 1111)
const Hive2_A1 = new Hive(A1, 'My Second Hive in A1', 2222)
const Hive3_A1 = new Hive(A1, 'My Third Hive in A1', 3333)
const Hive1_A2 = new Hive(A2, 'My First Hive in A2', 1111)
const Hive2_A2 = new Hive(A2, 'My Second Hive in A2', 2222)
const Hive3_A2 = new Hive(A2, 'My Third Hive in A2', 3333)

const Hives = [
    {Hive1_A1},{Hive2_A1},{Hive3_A1},{Hive1_A2},{Hive2_A2},{Hive3_A2},
]

function listHives(ApiaryName_Hive_1){
    var hives = Hives;
    hives.forEach((hive) => {
        if(hive.apiary_name === ApiaryName_Hive_1) {
            console.log(hive);
        } else {
            console.log('No hives in apiary A1 can be found')
        }
    });
}

listHives('A1')

вызывая функцию listHives ('A1'), я ожидаю, что в console.log увидим только Hive_1_A1, Hive_2_A1, Hive_3_A1.

1 Ответ

1 голос
/ 09 мая 2019

Когда вы делаете это:

const Hives = [
    {Hive1_A1},{Hive2_A1},{Hive3_A1},{Hive1_A2},{Hive2_A2},{Hive3_A2},
]

Вы используете сокращение JS, которое создает объекты.Это даст вам список объектов, таких как:

[{Hive1_A1: Hive1_A1}, {Hive2_A1: Hive2_A1} ...]

Если вы просто хотите получить список кустов, по которым вы можете перебирать, не используйте {} в определении списка, просто создайте простой массив:

const Hives = [Hive1_A1, Hive2_A1, Hive3_A1...]

class Hive {
    constructor(apiary_name, hive_name, hive_number) {
    this.apiary_name = apiary_name;
    this.hive_name = hive_name;
    this.hive_number = hive_number;
}}

const Hive1_A1 = new Hive("A1", 'My First Hive in A1', 1111)
const Hive2_A1 = new Hive("A1", 'My Second Hive in A1', 2222)
const Hive3_A1 = new Hive("A1", 'My Third Hive in A1', 3333)
const Hive1_A2 = new Hive("A2", 'My First Hive in A2', 1111)
const Hive2_A2 = new Hive("A2", 'My Second Hive in A2', 2222)
const Hive3_A2 = new Hive("A2", 'My Third Hive in A2', 3333)

const Hives = [Hive1_A1, Hive2_A1, Hive3_A1, Hive1_A2, Hive2_A2, Hive3_A2]

function listHives(ApiaryName_Hive_1){
   var hives = Hives;
   hives.forEach((hive) => {
       if(hive.apiary_name === ApiaryName_Hive_1) {
           console.log(hive);
       } else {
           console.log('No hives in apiary A1 can be found')
       }
   });
}

listHives('A1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...