Функсияи mapper-ро иҷро кунед, ки маълумотҳо (source), майдонҳо (fields), филтр (filter) ва навъбандӣ (order)-ро қабул мекунад. Зарур аст: параметрҳоро тасдиқ кунед (fields бояд массив бошад, source/filter/order функсияҳо бошанд, майдонҳо дар fields бояд дар маълумотҳо мавҷуд бошанд), маълумотҳоро тавассути call source() гиред, тавассути filter филтр кунед, тавассути order навъбандӣ кунед ва танҳо майдонҳои дар fields дархостшудаҳоро баргардонед.
sobes.tech AI
Ҷавоб аз AI
javascript function mapper({ source, fields, filter, order }) { // Валидация параметров if (!Array.isArray(fields)) { throw new TypeError('fields должен быть массивом'); } if (typeof source !== 'function') { throw new TypeError('source должен быть функцией'); } if (typeof filter !== 'function') { throw new TypeError('filter должен быть функцией'); } if (typeof order !== 'function') { throw new TypeError('order должен быть функцией'); }
const data = source();
if (!Array.isArray(data)) { throw new TypeError('source должен возвращать массив объектов'); }
// Проверка, что все поля из fields есть в данных
for (const field of fields) {
if (!data.every(item => field in item)) {
throw new Error(Поле '${field}' отсутствует в данных);
}
}
// Фильтрация const filtered = data.filter(filter);
// Сортировка const sorted = filtered.sort(order);
// Выбор только нужных полей return sorted.map(item => { const result = {}; for (const field of fields) { result[field] = item[field]; } return result; }); }
Пример использования:
```javascript
const source = () => [
{ id: 1, name: 'Alice', age: 30 },
{ id: 2, name: 'Bob', age: 25 },
{ id: 3, name: 'Charlie', age: 35 }
];
const fields = ['id', 'name'];
const filter = item => item.age >= 30;
const order = (a, b) => a.name.localeCompare(b.name);
const result = mapper({ source, fields, filter, order });
console.log(result);
// [{ id: 1, name: 'Alice' }, { id: 3, name: 'Charlie' }]