Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
1,417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.47 KB | None | 0 0
  1. // Task 1. Функции высшего порядка.
  2.  
  3. //1.Создать две функции и дать им осмысленные названия:
  4. //- первая функция принимает массив и колбэк (одна для всех вызовов)
  5. //- вторая функция (колбэк) обрабатывает каждый элемент массива (для каждого вызова свой callback)
  6.  
  7. //Первая функция возвращает строку “New value: ” и результат обработки:
  8.  
  9. //firstFunc([‘my’, ‘name’, ‘is’, ‘Trinity’], handler1) → “New value: MyNameIsTrinity”
  10. //firstFunc([10, 20, 30], handler2) → “New value: 100, 200, 300,”
  11. //firstFunc([{age: 45, name: ‘Jhon’}, {age: 20, name: ‘Aaron’}], handler3) →
  12. //“New value: Jhon is 45, Aaron is 20,”
  13. //firstFunc([‘abc’, ‘123’], handler4) → “New value: cba, 321,” // строки инвертируются
  14.  
  15.  
  16. //Подсказка: secondFunc должна быть представлена функцией, которая принимает
  17. //один аргумент (каждый элемент массива) и возвращает результат его обработки
  18.  
  19. function changeString(arr, getNewString) {
  20.  
  21. let newString = 'New value:';
  22.  
  23. for (let i = 0; i < arr.length; i++) {
  24. newString += getNewString(arr[i]);
  25. }
  26.  
  27. return console.log(newString);
  28. }
  29.  
  30. function stickCamelCaseString(item) {
  31.  
  32. return ' ' + item[0].toUpperCase() + item.slice(1);
  33. }
  34.  
  35. function increaseTen(item) {
  36.  
  37. return ' ' + (item *= 10) + ',';
  38. }
  39.  
  40. function objectToString(item) {
  41.  
  42. return ' ' + item.name + ' is ' + item.age + ',';
  43. }
  44.  
  45. function invertString(item) {
  46.  
  47. let newItem = '';
  48.  
  49. for (let i = item.length - 1; i >= 0; i--) {
  50. newItem += item[i];
  51. }
  52.  
  53. return ' ' + newItem + ',';
  54. }
  55.  
  56. changeString(['my', 'name', 'is', 'Trinity'], stickCamelCaseString);
  57. changeString([10, 20, 30], increaseTen);
  58. changeString([{ age: 45, name: 'Jhon' }, { age: 20, name: 'Aaron' }], objectToString);
  59. changeString(['abc', '123'], invertString);
  60.  
  61. //2.Написать аналог метода every. Создайте функцию every, она должна принимать первым аргументом массив чисел
  62. //(обязательно проверьте что передан массив) вторым аргументом callback
  63. //функция должна возвращать true или false в зависимости от результата вызова callback (проверить число больше 5).
  64. //Callback должен принимать один элемент массива, его индекс в массиве и весь массив.
  65.  
  66. function every(arr, callback) {
  67.  
  68. if (!Array.isArray(arr)) {
  69.  
  70. return console.log('Error!');
  71. }
  72.  
  73. for (let i = 0; i < arr.length; i++) {
  74.  
  75. if (!callback(arr[i], i, arr)) {
  76.  
  77. console.log('Not all items are valid');
  78. return false;
  79. }
  80. }
  81. console.log('All items are valid');
  82. return true;
  83. }
  84.  
  85. function moreThanFive(item, index, arr) {
  86.  
  87. if (item <= 5) {
  88.  
  89. return true;
  90. }
  91. else {
  92. console.log(`Item ${item} with index ${index} in array ${arr} more than five`);
  93. return false;
  94. }
  95. }
  96.  
  97. every([1, 2, 3, 8], moreThanFive);
  98. every([1, 2, 5, -1], moreThanFive);
  99.  
  100. // Task 2. Перебирающие методы.
  101.  
  102. //1.На основе массива [1,2,3,5,8,9,10] сформировать новый массив, каждый элемент которого будет хранить информацию о числе и его четности:
  103. //[{digit: 1, odd: true}, {digit: 2, odd: false}, {digit: 3, odd: true}...]
  104.  
  105. arr = [1, 2, 3, 5, 8, 9, 10];
  106.  
  107. let newArr = arr.map(function (item) {
  108.  
  109. if (item % 2 === 0) {
  110.  
  111. return { digit: item, odd: true };
  112. }
  113. else {
  114.  
  115. return { digit: item, odd: false };
  116. }
  117. });
  118.  
  119. console.log(newArr);
  120.  
  121. //2.Проверить, содержит ли массив [12, 4, 50, 1, 0, 18, 40] элементы, равные нулю. Если да - вернуть false.
  122.  
  123. arr = [12, 4, 50, 1, 0, 18, 40];
  124. newArr = [12, 4, 50, 1, -5, 18, 40];
  125.  
  126. function haveZero(number) {
  127.  
  128. return number === 0;
  129. }
  130.  
  131. console.log(!arr.some(haveZero));
  132. console.log(!newArr.some(haveZero));
  133.  
  134. //3.Проверить, содержит ли массив ['yes', 'hello', 'no', 'easycode', 'what'] хотя бы одно слово длиной больше 3х букв.
  135. //Если да - вернуть true
  136.  
  137. arr = ['yes', 'hello', 'no', 'easycode', 'what'];
  138. newArr = ['yes', 'no'];
  139.  
  140. function nameLength(name) {
  141.  
  142. if (name.length > 3) {
  143.  
  144. return true;
  145. }
  146. }
  147.  
  148. console.log(arr.some(nameLength));
  149. console.log(newArr.some(nameLength));
  150.  
  151. //4.Дан массив объектов, где каждый объект содержит информацию о букве и месте её положения в строке {буква: “a”, позиция_в_предложении: 1}:
  152.  
  153. //[{char:"a",index:12}, {char:"w",index:8}, {char:"Y",index:10}, {char:"p",index:3}, {char:"p",index:2},
  154. //{char:"N",index:6}, {char:" ",index:5}, {char:"y",index:4}, {char:"r",index:13}, {char:"H",index:0},
  155. //{char:"e",index:11}, {char:"a",index:1}, {char:" ",index:9}, {char:"!",index:14}, {char:"e",index:7}]
  156.  
  157. //Напишите функцию, которая из элементов массива соберет и вернёт строку, основываясь на index каждой буквы. Например:
  158. //[{char:"H",index:0}, {char:"i",index: 1}, {char:"!",index:2}] → “Hi!”
  159.  
  160. //Подсказка: вначале отсортируйте массив по index, затем используйте reduce() для построения строки
  161.  
  162. arr = [{ char: "a", index: 12 }, { char: "w", index: 8 }, { char: "Y", index: 10 }, { char: "p", index: 3 }, { char: "p", index: 2 },
  163. { char: "N", index: 6 }, { char: " ", index: 5 }, { char: "y", index: 4 }, { char: "r", index: 13 }, { char: "H", index: 0 },
  164. { char: "e", index: 11 }, { char: "a", index: 1 }, { char: " ", index: 9 }, { char: "!", index: 14 }, { char: "e", index: 7 }];
  165.  
  166. arr.sort(function (a, b) {
  167. if (a.index > b.index) {
  168. return 1;
  169. }
  170. if (a.index < b.index) {
  171. return -1;
  172. }
  173. // a должно быть равным b
  174. return 0;
  175. });
  176.  
  177. let builString = arr.reduce(function (res, current) {
  178. return res.concat(current.char);
  179. }, '');
  180.  
  181. console.log(builString);
  182.  
  183. // Task 3. Метод Sort.
  184.  
  185. //1.Отсортируйте массив массивов так, чтобы вначале располагались наименьшие массивы (размер массива определяется его длиной):
  186. //[ [14, 45], [1], ['a', 'c', 'd'] ] → [ [1], [14, 45], ['a', 'c', 'd'] ]
  187.  
  188. arr = [[14, 45], [1], ['a', 'c', 'd']];
  189. console.log(arr);
  190.  
  191. arr.sort(function (a, b) {
  192. if (a.length > b.length) {
  193. return 1;
  194. }
  195. if (a.length < b.length) {
  196. return -1;
  197. }
  198. // a должно быть равным b
  199. return 0;
  200. });
  201.  
  202. console.log(arr);
  203.  
  204. //2.Есть массив объектов:
  205. // [
  206. // {cpu: 'intel', info: {cores:2, сache: 3}},
  207. // {cpu: 'intel', info: {cores:4, сache: 4}},
  208. // {cpu: 'amd', info: {cores:1, сache: 1}},
  209. // {cpu: 'intel', info: {cores:3, сache: 2}},
  210. // {cpu: 'amd', info: {cores:4, сache: 2}}
  211. // ]
  212.  
  213. //Отсортировать их по возрастающему количеству ядер (cores).
  214.  
  215. arr = [
  216. { cpu: 'intel', info: { cores: 2, сache: 3 } },
  217. { cpu: 'intel', info: { cores: 4, сache: 4 } },
  218. { cpu: 'amd', info: { cores: 1, сache: 1 } },
  219. { cpu: 'intel', info: { cores: 3, сache: 2 } },
  220. { cpu: 'amd', info: { cores: 4, сache: 2 } }
  221. ];
  222.  
  223. arr.sort(function (a, b) {
  224. if (a.info.cores > b.info.cores) {
  225. return 1;
  226. }
  227. if (a.info.cores < b.info.cores) {
  228. return -1;
  229. }
  230. // a должно быть равным b
  231. return 0;
  232. });
  233.  
  234. console.log(arr);
  235.  
  236. //3.Создать функцию, которая будет принимать массив продуктов и две цены. Функция должна вернуть все продукты,
  237. //цена которых находится в указанном диапазоне, и сортировать от дешевых к дорогим:
  238.  
  239. // let products = [
  240. // {title: 'prod1', price: 5.2}, {title: 'prod2', price: 0.18},
  241. // {title: 'prod3', price: 15}, {title: 'prod4', price: 25},
  242. // {title: 'prod5', price: 18.9}, {title: 'prod6', price: 8},
  243. // {title: 'prod7', price: 19}, {title: 'prod8', price: 63}
  244. // ];
  245.  
  246. //filterCollection(products, 15, 30) → [{...price: 15}, {...price: 18.9}, {...price: 19}, {...price: 25}]
  247.  
  248. let products = [
  249. {title: 'prod1', price: 5.2}, {title: 'prod2', price: 0.18},
  250. {title: 'prod3', price: 15}, {title: 'prod4', price: 25},
  251. {title: 'prod5', price: 18.9}, {title: 'prod6', price: 8},
  252. {title: 'prod7', price: 19}, {title: 'prod8', price: 63}
  253. ];
  254.  
  255. function filterCollection(products, minPrice, maxPrice){
  256.  
  257. let resArr = products.filter(function(item) {
  258. return item.price >= minPrice && item.price <= maxPrice;
  259. });
  260.  
  261. resArr.sort(function (a, b) {
  262. if (a.price > b.price) {
  263. return 1;
  264. }
  265. if (a.price < b.price) {
  266. return -1;
  267. }
  268. // a должно быть равным b
  269. return 0;
  270. });
  271.  
  272. return resArr;
  273. }
  274.  
  275. console.log(filterCollection(products, 15, 30));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement