Skip to content

Commit

Permalink
Added task Функция sumSalary(salaries)
Browse files Browse the repository at this point in the history
  • Loading branch information
jsru-1 committed Sep 27, 2024
1 parent 73c342c commit 3dca3f3
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
27 changes: 27 additions & 0 deletions 2-module/1-task/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Функция sumSalary(salaries)

У нас есть объект, в котором хранятся зарплаты нашей команды:
```js
let salaries = {
John: 1000,
Ann: 1600,
Pete: 1300,
month: 'December',
currency: 'USD',
isPayed: false
}
```

Напишите функцию для суммирования всех зарплат. Должно получиться 3900.

```js
sumSalary(salaries); // 3900
```

Обратите внимание, что помимо зарплат, в объекте хранится дополнительная информация:
тип валюты (`currency`), выплачена зарплата или нет(`isPayed`). Значения в этих свойствах могут быть любого типа, кроме числового.

Т.е. если в свойстве находится зарплата, то тип значения - число. Однако, перед сложением нужно не забыть исключить специальные числовые значения, которые нам не подходят: `NaN`, `Infinity`, `-Infinity`.
А если служебная информация, тип значения - любой другой. Мы ожидаем получить сумму только зарплат, другие свойства следует игнорировать.

Также нужно учесть ситуацию, когда в объекте нет свойств, хранящих зарплаты. В таком случае функция должна вернуть 0.
3 changes: 3 additions & 0 deletions 2-module/1-task/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function sumSalary(salaries) {
// ваш код...
}
50 changes: 50 additions & 0 deletions 2-module/1-task/task.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
describe('2-module-1-task', () => {
it('должна складывать все зарплаты', () => {
let salaries = {
John: 1000,
Ann: 1600,
Pete: 1300
};

expect(sumSalary(salaries)).toEqual(3900);
});

it('должна игнорировать свойства других типов', () => {
let salaries = {
John: 1000,
Ann: 1600,
Pete: 1300,
month: 'December',
currency: 'USD',
isPayed: false
};

expect(sumSalary(salaries)).toEqual(3900);
});

it('должна игнорировать специальные числовые значения', () => {
let salaries = {
John: 1000,
Ann: 1600,
Pete: 1300,
Bob: NaN,
Peter: Infinity,
Ivan: -Infinity,
month: 'December',
currency: 'USD',
isPayed: false
};

expect(sumSalary(salaries)).toEqual(3900);
});

it('должна возвращать 0 если нет свойств с зарплатами', () => {
let salaries = {
month: 'December',
currency: 'USD',
isPayed: false
};

expect(sumSalary(salaries)).toEqual(0);
});
});

0 comments on commit 3dca3f3

Please sign in to comment.