-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added task Функция sumSalary(salaries)
- Loading branch information
Showing
3 changed files
with
80 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
function sumSalary(salaries) { | ||
// ваш код... | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
}); | ||
}); |