Есть два массива с объектами. Нужно сверить если элементы первого массива есть во втором. Пример:
const workers = [
{
name: "John",
salary: 2500
},
{
name: "Jason",
salary: 3000
}
]
const companies = [
{
name: "BMW",
workers: [
{
name: "John",
salary: 2000
},
{
name: "Jason",
salary: 3000
}
],
description: "some description"
},
{
name: "ВАЗ",
workers: [
{
name: "Вася",
salary: 200
},
{
name: "Ваня",
salary: 3000
}
],
description: "some description"
}
Вывести компании у которых есть работники с этим именем и зарплатой меньше чем в массиве workers. У Джона зарплата 2500, а в компании 2000 - значит можно вывести объект из массива с компаниями. В данном случае вывести BMW.
companies.forEach(cmp => /*перебираем массив с компаниями*/
cmp.workers && cmp.workers.forEach(cmpWk => /*в компании перебираем массив с работниками этой компании*/
workers.forEach(wk => /*в нём перебираем массив со всеми работниками*/
wk.name == cmpWk.name && wk.salary > cmpWk.salary && /*сравниваем работников по вашему условию*/
console.log(wk.name, cmp) /*выводим компанию*/
)
)
)
function checkSalary(workers, companies) {
let workersObject = {};
// Делаем из массива объектов workers просто объект с ключом name и значением salary
workers.forEach((worker) => {
if (worker.hasOwnProperty('name') && worker.hasOwnProperty('salary')) {
// Это поможет в дальнейшем избежать лишних циклов для перебора значений
workersObject[worker['name']] = worker['salary'];
}
});
// теперь в workersObject хранятся такие значения:
// { "John": 2500, "Jason": 3000 } - обращаться к такому объекту проще и быстрее по ключу, т.е. в данном случае по имени работника
// Будем перебирать все объекты в массиве компаний
companies.forEach((company) => {
if (company.hasOwnProperty('workers')) {
// если объект "компания" имеет ключ workers, то перебираем всех работников этой компании
company['workers'].forEach((worker) => {
// теперь можно проверять условие основной задачи
// если у объекта "работник" есть ключ "имя" и это имя содержится в ранее сформированном объекте "workersObject",
if (worker.hasOwnProperty('name') && workersObject.hasOwnProperty(worker['name'])) {
// то далее проверяем, есть ли ключ "зарплата" у объекта "работник" и если, она меньше, чем у работника с таким же именем в объекте "workersObject",
if (worker.hasOwnProperty('salary') && worker['salary'] < workersObject[worker['name']]) {
// то выводим имя компании
console.log(company['name']);
}
}
});
}
});
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Обратная связь на сайте реализована с помощью библиотеки php mailerВозникла необходимость передачи выбранного значения тега select
Здравствуйте, при таком использовании, действие происходит по правилам тоглера, те