Обучение JS - Как получить значение из пары ключ / значение, если эта пара сама является значением другой пары, все в массиве? - PullRequest
0 голосов
/ 27 января 2020

Хорошо, я учусь JS, и я ударился о стену. Я прошу прощения, если я использую неправильные термины для описания чего-либо из этого, но ...

В приведенном ниже коде мне нужно проверить в массиве 'people' - в пределах 'location' (местоположение будет считаться ключевым здесь?) - получить значение «состояние» (ключ / значение как значение ключа ???) - и проверить, является ли оно определенным «состоянием». Я должен проверить это для каждого человека в массиве 'people'.

Я знаю, как проверить, является ли значение 'state' тем, каким мне нужно, или нет (как только я действительно доберусь до этого ценность), но я не могу понять это глубоко. Я знаю, что мне нужен al oop, который вытягивает значение 'state' изнутри 'location' изнутри 'people', но я не знаю, как начать писать это.

const people = [{
    location: {
        street: 'B Street',
        state: 'New Hampshire',
        country: 'United States',
        city: 'New Douglas'
    },
    last_name: 'Schumm',
    first_name: 'Tom',
    contacts: {
        mobile: '(904) 730-4211',
        email: 'deep_shakira@hotmail.com'
    }
},
{
    location: {
        street: 'Pennsylvania Avenue',
        state: 'Hawaii',
        country: 'United States',
        city: 'Woodland'
    },
    last_name: 'Jacobson',
    first_name: 'Reyna',
    contacts: {
        mobile: '1-968-545-2264',
        email: 'type_leta@yahoo.com'
    }
},
{
    location: {
        street: 'Cottage Street',
        state: 'Connecticut',
        country: 'United States',
        city: 'Glaslyn'
    },
    last_name: 'Zemlak',
    first_name: 'Maxwell',
    contacts: {
        mobile: '1-407-135-6122',
        email: 'dorthy@hotmail.com'
    }
}

Ответы [ 3 ]

0 голосов
/ 27 января 2020

Вы можете сделать это следующим образом

Фильтровать массив людей по значению в location.state каждого объекта внутри массива,

Вы можете улучшить условие соответствия для состояний на основе по вашему выбору, [например, сравнение после преобразования всех в строчные и триммеры], но это полностью зависит от того, что у вас есть

var people = [{
    location: {
        street: 'B Street',
        state: 'New Hampshire',
        country: 'United States',
        city: 'New Douglas'
    },
    last_name: 'Schumm',
    first_name: 'Tom',
    contacts: {
        mobile: '(904) 730-4211',
        email: 'deep_shakira@hotmail.com'
    }
},
{
    location: {
        street: 'Pennsylvania Avenue',
        state: 'Hawaii',
        country: 'United States',
        city: 'Woodland'
    },
    last_name: 'Jacobson',
    first_name: 'Reyna',
    contacts: {
        mobile: '1-968-545-2264',
        email: 'type_leta@yahoo.com'
    }
},
{
    location: {
        street: 'Cottage Street',
        state: 'Connecticut',
        country: 'United States',
        city: 'Glaslyn'
    },
    last_name: 'Zemlak',
    first_name: 'Maxwell',
    contacts: {
        mobile: '1-407-135-6122',
        email: 'dorthy@hotmail.com'
    }
}];

let states = ['Alaska','Hawaii'];

var filtered = people.filter( person => states.indexOf(person.location.state) > -1 );

console.log(filtered);
0 голосов
/ 27 января 2020

const people = [{
        location: {
            street: 'B Street',
            state: 'New Hampshire',
            country: 'United States',
            city: 'New Douglas'
        },
        last_name: 'Schumm',
        first_name: 'Tom',
        contacts: {
            mobile: '(904) 730-4211',
            email: 'deep_shakira@hotmail.com'
        }
    },
    {
        location: {
            street: 'Pennsylvania Avenue',
            state: 'Hawaii',
            country: 'United States',
            city: 'Woodland'
        },
        last_name: 'Jacobson',
        first_name: 'Reyna',
        contacts: {
            mobile: '1-968-545-2264',
            email: 'type_leta@yahoo.com'
        }
    },
    {
        location: {
            street: 'Cottage Street',
            state: 'Connecticut',
            country: 'United States',
            city: 'Glaslyn'
        },
        last_name: 'Zemlak',
        first_name: 'Maxwell',
        contacts: {
            mobile: '1-407-135-6122',
            email: 'dorthy@hotmail.com'
        }
    }];
const test1 = people.find(people => people.location.state === 'Connecticut');
console.log(test1);

Вы можете использовать одно выражение для поиска:

const test1 = people.find(people => people.location.state === 'Connecticut');
0 голосов
/ 27 января 2020

Вы можете пройти массив и использовать. обозначения получить значения состояния. Вы можете использовать условие if для проверки определенного c состояния

const people = [{
    location: {
      street: 'B Street',
      state: 'New Hampshire',
      country: 'United States',
      city: 'New Douglas'
    },
    last_name: 'Schumm',
    first_name: 'Tom',
    contacts: {
      mobile: '(904) 730-4211',
      email: 'deep_shakira@hotmail.com'
    }
  },
  {
    location: {
      street: 'Pennsylvania Avenue',
      state: 'Hawaii',
      country: 'United States',
      city: 'Woodland'
    },
    last_name: 'Jacobson',
    first_name: 'Reyna',
    contacts: {
      mobile: '1-968-545-2264',
      email: 'type_leta@yahoo.com'
    }
  },
  {
    location: {
      street: 'Cottage Street',
      state: 'Connecticut',
      country: 'United States',
      city: 'Glaslyn'
    },
    last_name: 'Zemlak',
    first_name: 'Maxwell',
    contacts: {
      mobile: '1-407-135-6122',
      email: 'dorthy@hotmail.com'
    }
  }
]
people.forEach(e => {
  if (e.location.state == 'Connecticut') {
    console.log(e.first_name + " " + e.last_name)
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...