object-util.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  2. * 对象工具
  3. */
  4. const ObjectUtil = {
  5. /**
  6. * 判断指定值是否是一个对象
  7. * @param {any} arg 参数
  8. */
  9. isObject(arg) {
  10. return Object.prototype.toString.call(arg) === '[object Object]';
  11. },
  12. /**
  13. * 对象中是否包含指定的属性
  14. * @param {object} object 对象
  15. * @param {any} name 属性名
  16. */
  17. containsProperty(object, name) {
  18. let result = false;
  19. const search = (_object) => {
  20. if (this.isObject(_object)) {
  21. for (const key in _object) {
  22. if (key == name) {
  23. result = true;
  24. return;
  25. }
  26. search(_object[key]);
  27. }
  28. } else if (Array.isArray(_object)) {
  29. for (let i = 0; i < _object.length; i++) {
  30. search(_object[i]);
  31. }
  32. }
  33. }
  34. search(object);
  35. return result;
  36. },
  37. /**
  38. * 对象中是否包含指定的值
  39. * @param {object} object 对象
  40. * @param {any} value 值
  41. */
  42. containsValue(object, value) {
  43. let result = false;
  44. const search = (_object) => {
  45. if (this.isObject(_object)) {
  46. for (const key in _object) {
  47. if (_object[key] === value) {
  48. result = true;
  49. return;
  50. }
  51. search(_object[key]);
  52. }
  53. } else if (Array.isArray(_object)) {
  54. for (let i = 0; i < _object.length; i++) {
  55. search(_object[i]);
  56. }
  57. }
  58. }
  59. search(object);
  60. return result;
  61. }
  62. }
  63. module.exports = ObjectUtil;