arrayOperation.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * 判断两数组是否相同
  3. * @param news 新数据
  4. * @param old 源数据
  5. * @returns 两数组相同返回 `true`,反之则反
  6. */
  7. export function judementSameArr(
  8. news: unknown[] | string[],
  9. old: string[]
  10. ): boolean {
  11. let count = 0
  12. const leng = old.length
  13. for (let i in old) {
  14. for (let j in news) {
  15. if (old[i] === news[j]) count++
  16. }
  17. }
  18. return count === leng ? true : false
  19. }
  20. /**
  21. * 判断两个对象是否相同
  22. * @param a 要比较的对象一
  23. * @param b 要比较的对象二
  24. * @returns 相同返回 true,反之则反
  25. */
  26. export function isObjectValueEqual(
  27. a: { [key: string]: any },
  28. b: { [key: string]: any }
  29. ) {
  30. if (!a || !b) return false
  31. let aProps = Object.getOwnPropertyNames(a)
  32. let bProps = Object.getOwnPropertyNames(b)
  33. if (aProps.length != bProps.length) return false
  34. for (let i = 0; i < aProps.length; i++) {
  35. let propName = aProps[i]
  36. let propA = a[propName]
  37. let propB = b[propName]
  38. if (!b.hasOwnProperty(propName)) return false
  39. if (propA instanceof Object) {
  40. if (!isObjectValueEqual(propA, propB)) return false
  41. } else if (propA !== propB) {
  42. return false
  43. }
  44. }
  45. return true
  46. }