/* ДЗ 3 - работа с массивами и объеектами */
/*
Задача 1:
Напишите аналог встроенного метода forEach для работы с массивами
*/
function forEach(array, fn) {
for (var i = 0; i < array.length; i++) {
fn(array[i], i, array);
}
}
/*
Задача 2:
Напишите аналог встроенного метода map для работы с массивами
*/
function map(array, fn) {
var copy_array = [];
for (var i = 0; i < array.length; i++) {
copy_array[i] = fn(array[i], i, array);
}
return copy_array;
}
/*
Задача 3:
Напишите аналог встроенного метода reduce для работы с массивами
*/
function reduce(array, fn, initial) {
var x = initial || array[0],
i = initial ? 0 : 1;
for (; i < array.length; i++) {
x = fn(x, array[i], i, array);
}
return x;
}
/*
Задача 4:
Функция принимает объект и имя свойства, которое необходиом удалить из объекта
Функция должна удалить указанное свойство из указанного объекта
*/
function deleteProperty(obj, prop) {
delete obj[prop];
}
/*
Задача 5:
Функция принимает объект и имя свойства и возвращает true или false
Функция должна проверить существует ли укзаанное свойство в указанном объекте
*/
function hasProperty(obj, prop) {
if (prop in obj) {
return true;
} else {
return false;
}
}
/*
Задача 6:
Функция должна получить все перечисляемые свойства объекта и вернуть их в виде массива
*/
function getEnumProps(obj) {
var arr = [];
for (var key in obj) {
arr.push(key);
}
return arr;
}
/*
Задача 7:
Функция должна перебрать все свойства объекта, преобразовать их имена в верхний регистра и вернуть в виде массива
*/
function upperProps(obj) {
var arr = [];
for (var key in obj) {
key = key.toUpperCase();
arr.push(key);
}
return arr;
}
export {
forEach,
map,
reduce,
deleteProperty,
hasProperty,
getEnumProps,
upperProps
};