Всем привет,имеется вот такой массив данных
var obj = [{
name: 'Test',
expirence: '364 days',
Frontender: true,
Backender: true,
company: 'aaa'
},
{
name: 'Test 2',
expirence: '367 days',
Frontender: true,
Backender: false,
company: 'aaa'
},
{
name: 'Test 3',
expirence: '731 days',
Frontender: true,
Backender: false,
company: 'Cccc'
},
{
name: 'Test 4',
expirence: '731 days',
Frontender: true,
Backender: false,
company: ''
}
];
Как найти:
1) есть ли в массиве хотя бы один Fullstack (фронтендер и бекендер одновременно)
2) являются ли все разработчики фронтедерами
3) всех работающих в компании например "aaa"
4) все ли работают в компании (у всех ли поле 'company' заполнено)
Буду очень благодарен
У массива в js есть масса полезных методов. Нас интересует пара:
filter(callback)
- возвращает новый массив с элементами, для которых callback(element) вернул truthy значение (нечто, что приводится к true, непустая строка, ненулевое число и т.п.)every(callback)
- возвращает true если callback(element) возвращает truthy значение для каждого элемента в массивеsome(callback)
- возвращает true если callback(element) возвращает truthy значение хотя бы для одного элемента в массиве// Исходные данные
var data = [{name: 'Test', expirence: '364 days', Frontender: true, Backender: true, company: 'aaa'}, {name: 'Test 2', expirence: '367 days', Frontender: true, Backender: false, company: 'aaa'}, {name: 'Test 3', expirence: '731 days', Frontender: true, Backender: false, company: 'Cccc'}, {name: 'Test 4', expirence: '731 days', Frontender: true, Backender: false, company: ''} ];
// 1. Есть ли fullstack?
// Применим фильтр
let hasFullstack = data.some(e => e.Frontender && e.Backender);
// 2. Все ли front?
let areAllFront = data.every(e => e.Frontender);
// 3. Выборка по компании
let aaaEmployers = data.filter(e => e.company === 'aaa');
// 4. У всех заполнена company
let areAllCompanyFilled = data.every(e => e.company);
console.log(
hasFullstack,
areAllFront,
aaaEmployers.map(e => e.name),
areAllCompanyFilled)
Вероятно вам поможет функция поиска в массиве, вот.
function search(array) {
for (var i = 0; i < array.length; i++) {
for(key in array[i]) {
if(array[i].Backender == "true" and array[i].Frontender == "true") {
return "FullStack";
}
}
}
return -1;
}
По подобному алгоритму, можно решить все ваши задачи, просто добавьте проверку например на есть ли у компании «ааа» если есть, упускаем return, если нет возвращаемые false. По вашей просьбе могу уточнить ответ.
UPD:
function search(array, key, value) {
for (var i = 0; i < array.length; i++) {
if(array[i].key != value) {
return false;
}
}
return true,
}
search(тут указываем массив, тут указываем какое свойство надо проверять, тут какие у свойства должны быть значения);
Например
search(array, "company", "aaa");
Если у всех работающих компания будет "aaa" вернёт true
В противном случае false
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Могу ли я хранить в games для каждой игры свои переменные со значениями id_game и href_game?
Как выполнить POST запрос на бэке на другой бэк и получить response? (аналог fetch на фронте)