Source: common/arrays.js

  1. 'use strict';
  2. /**
  3. * @module lib/common/arrays
  4. * @summary Whiteflag API common array functions module
  5. * @description Module with synchronous array functions making life easier
  6. * @tutorial modules
  7. */
  8. module.exports = {
  9. // Array functions
  10. addItem,
  11. addArray,
  12. pluck,
  13. plucksub
  14. };
  15. // MAIN MODULE FUNCTIONS //
  16. /**
  17. * Adds item to array
  18. * @function addItem
  19. * @alias module:lib/common/arrays.addItem
  20. * @param {Array} array
  21. * @param {*} item
  22. * @returns {Array}
  23. */
  24. function addItem(array, item) {
  25. if (Array.isArray(array)) {
  26. array.push(item);
  27. return array;
  28. }
  29. return [ item ];
  30. }
  31. /**
  32. * Adds array 2 to the end of array 1
  33. * @function addArray
  34. * @alias module:lib/common/arrays.addArray
  35. * @param {Array} array1
  36. * @param {Array} array2
  37. * @returns {Array}
  38. */
  39. function addArray(array1, array2) {
  40. if (Array.isArray(array1)) {
  41. if (Array.isArray(array2)) return array1.concat(array2);
  42. return array1;
  43. }
  44. if (Array.isArray(array2)) return array2;
  45. return [];
  46. }
  47. /**
  48. * Gets single property from array of objects
  49. * @function pluck
  50. * @alias module:lib/common/arrays.pluck
  51. * @param {Array} array array of objects
  52. * @param {string} key object property name
  53. * @returns {Array}
  54. */
  55. function pluck(array, key) {
  56. return array.map(object => {
  57. return object[key];
  58. });
  59. }
  60. /**
  61. * Gets single subobject property from array of objects
  62. * @function plucksub
  63. * @alias module:lib/common/arrays.plucksub
  64. * @param {Array} array array of objects
  65. * @param {string} key object property name
  66. * @param {string} subkey object property name
  67. * @returns {Array}
  68. */
  69. function plucksub(array, key, subkey) {
  70. return array.map(object => {
  71. return object[key][subkey];
  72. });
  73. }