一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种前端对象的比较方法及系统与流程

2022-12-13 22:25:27 来源:中国专利 TAG:


1.本发明涉及前端开发技术领域,具体而言,涉及一种前端对象的比较方法及系统。


背景技术:

2.大数据时代,数据对于个人和企业而言都是至关重要的。目前,随着计算机和网络应用的日益广泛以及不同领域的业务种类的日益丰富,前端对象处理方法变得越来越重要,直接影响前端开发的效率和数据处理的准确率;为了判断对象的属性是否发生改变,则需要对两个对象进行比较,其中,所述对象属于一种复合的数据类型。
3.现有对象比较方法主要有两种,第一种是对对象的引用地址的笼统比较,第二种是对对象的属性进行全等比较;其中,第一种对象比较方法存在的缺陷是因为标识符存放于栈内存中,标识符所指向的引用地址存放于堆内存种,当两个标识符指向的是同一个内存地址,这两个对象才相等,但当只对对象的属性值进行修改而不对该对象重新赋值时,该对象的引用地址并不会发生改变,则该方法并不能准确判断出对象是否发生改变;第二种对象比较方法则需要层层比较、逐级遍历,在部分极端情况下需要遍历到最后一个节点才能得出两个对象不相等的结论,极大地占用内存空间,耗费时间,时空复杂度较高。


技术实现要素:

4.为了解决现有对象比较方法无法准确进行判定或者对象判定占用极大内存空间和时间,时空复杂度较高的问题,本发明提供了一种前端对象的比较方法及系统。
5.在第一方面,本发明实施例中提供一种前端对象的比较方法,所述方法包括以下步骤:
6.(1)判断源对象和目标对象的数据类型;
7.(2)如果源对象和/或目标对象为空类型,则对源对象和目标对象进行全等比较,并且返回比较结果;
8.(3)如果源对象和目标对象均为引用类型,则对源对象和目标对象进行数组长度比较、属性长度比较,并且返回比较结果;
9.(4)如果源对象和目标对象均为基础类型,则对源对象和目标对象进行全等比较,并且返回比较结果。
10.于上述实施例中,首先判断源对象和目标对象是否为空类型,当存在空类型时,则可以通过判断源对象和目标对象不等,快速得出源对象和目标对象不等的结论,如果源对象和目标对象不存在空类型时,则继续判断源对象和目标对象是否为引用类型,当为引用类型时,则可以通过判断源对象和目标对象的数组长度或者可枚举的属性长度不同,快速得出源对象和目标对象不等的结论,避免了当遇到上述极端情况还需层层遍历递归到最后的节点才能得出结论的情况,降低时空复杂度。
11.作为本技术一些可选实施方式,如果源对象和目标对象均为空类型,则返回正确提示;如果源对象和目标对象存在一个空类型,则返回错误提示。
12.作为本技术一些可选实施方式,当源对象和目标对象均为引用类型,对源对象和目标对象进行数组长度比较、属性长度比较的流程如下:
13.如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度不同,则返回错误提示;
14.如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度相同,则获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则返回错误提示;
15.如果目标对象不是数组类型,则获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则返回错误提示。
16.于上述实施例中,当源对象和目标对象为引用类型时,首先判断目标对象是否为数组类型,如果为数组类型,则可以通过判断目标对象和源对象的数组长度不等,快速得出源对象和目标对象不等的结论;然后还可以通过判断源对象和目标的属性长度不等,快速得出源对象和目标对象不等的结论,整个判断逻辑紧密结合,由浅入深,进而能够快速得出比较结论,降低时空复杂度。
17.作为本技术一些可选实施方式,如果目标对象是数组类型,并且目标对象的数组长度与源对象的数组长度相同,目标对象的属性长度和源对象的属性长度相同,则进行以下处理:
18.循环遍历目标对象的属性和源对象的可枚举的属性;
19.如果目标对象的属性和源对象的属性不同,则返回错误提示。
20.作为本技术一些可选实施方式,如果目标对象不是数组类型,则获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度相同,则进行以下处理:
21.循环遍历目标对象的属性和源对象的可枚举的属性;
22.如果目标对象的属性和源对象的属性不同,则返回错误提示。
23.作为本技术一些可选实施方式,所述源对象和目标对象为前端封装的json格式数据。
24.作为本技术一些可选实施方式,如果源对象和/或目标对象为空类型,则采用全等运算符对源对象和目标对象进行全等比较;如果源对象和目标对象均为基础类型,则采用全等运算符对源对象和目标对象进行全等比较。
25.在第二方面,本发明提供一种前端对象的比较系统,所述系统包括:数据类型判断单元、空类型数据处理单元、引用类型数据处理单元以及基础类型数据处理单元;
26.所述数据类型判断单元用于判断源对象和目标对象的数据类型;
27.所述空类型数据处理单元用于对空类型的源对象和/或目标对象进行全等比较、属性长度比较,并且返回比较结果;
28.所述引用类型数据处理单元用于对引用类型的源对象和目标对象进行数组长度比较,并且返回比较结果;
29.所述基础类型数据处理单元用于对基础类型的源对象和目标对象进行全等比较,并且返回比较结果。
30.作为本技术一些可选实施方式,所述引用类型数据处理单元包括:
31.数组类型判断模块、数组长度判断模块、属性获取模块、属性长度判断模块;
32.所述数组类型判断模块用于判断源对象和目标对象是否为数组类型,如果目标对象是数组类型,则将源对象和目标对象传输到数组长度判断模块,如果目标对象不是数组类型,则将源对象和目标对象传输到属性获取模块;
33.所述数组长度判断单元用于判断目标对象的数组长度和源对象的数组长度是否相同,如果相同,则将源对象和目标对象传输到属性获取模块,如果不同,则返回错误提示;
34.所述属性获取模块用于获取源对象和目标对象的可枚举的属性,并且将属性传输到属性长度判断模块;
35.所述属性长度判断模块用于判断目标对象的属性长度和源对象的属性长度是否相同,如果相同,则循环遍历目标对象的属性,并且对目标对象的属性和源对象的属性进行比较,并且返回比较结果,如果不同,则返回错误提示。
36.在第三方面,本发明提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述一种前端对象的比较方法。
37.在第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述一种前端对象的比较方法。
38.本发明的有益效果如下:本发明在进行循环遍历之前,首先判断源对象和目标对象是否为空类型,当存在空类型时,则可以通过判断源对象和目标对象不等,快速得出源对象和目标对象不等的结论,如果源对象和目标对象不存在空类型时,则继续判断源对象和目标对象是否为引用类型,当为引用类型时,则可以通过判断源对象和目标对象的数组长度或者可枚举的属性长度不同,快速得出源对象和目标对象不等的结论,避免了当遇到上述极端情况还需层层遍历递归到最后的节点才能得出结论的情况,降低时空复杂度。
附图说明
39.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
40.图1是根据本发明的一些实施例所述前端对象的比较方法的步骤图。
41.图2是根据本发明的一些实施例所述前端对象的比较方法的流程图。
42.图3是根据本发明的一些实施例所述前端对象的比较系统的系统框图。
具体实施方式
43.为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
44.同样应当理解的是,为了简化本发明揭示的表述,从而帮助对至少一个发明实施例的理解,前文对本发明实施例的描述中,有时会将多种特征归并至一个实施例、附图或对
其的描述中。但是,这种披露方法并不意味着本发明对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
45.实施例1
46.本发明提供一种前端对象的比较方法,所述方法主要应用于前端封装对象比较,即为了判断封装对象的属性值是否发生改变,则需要通过比较前后两个对象是否相等。
47.作为本技术一些可选实施方式,请参阅图1,所述方法包括以下步骤:
48.(1)获取前端封装的源对象和目标对象,并且判断源对象和目标对象的数据类型,所述源对象和目标对象均为前端封装的json格式数据。
49.(2)如果源对象和/或目标对象为空类型(null类型),则对源对象和目标对象进行全等比较,如果全等,则返回正确(ture)提示,如果不全等,则返回错误(false)提示;即采用全等运算符对源对象和目标对象进行全等比较;
50.即如果源对象和目标对象均为空类型,则返回正确(ture)提示;如果源对象和目标对象存在一个空类型,则返回错误(false)提示。
51.(3)如果源对象和目标对象均为引用类型(object类型),则对源对象和目标对象进行数组长度比较、属性长度比较,如果相同,则返回正确提示,如果不同,则返回错误提示。
52.作为本技术一些可选实施方式,请参阅图2,数组长度比较、属性长度比较的流程如下:
53.(3.1)如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度不同,则返回错误提示。
54.(3.2)如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度相同,则通过函数object.keys()获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则返回错误提示。
55.(3.3)如果目标对象是数组类型,并且目标对象的数组长度与源对象的数组长度相同,目标对象的属性长度和源对象的属性长度相同,则循环遍历目标对象的属性和源对象的属性,如果目标对象的属性和源对象的属性不同,则返回错误提示。
56.(3.4)如果目标对象不是数组类型,则通过函数object.keys()获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则返回错误提示。
57.(3.5)如果目标对象不是数组类型,并且目标对象的属性长度和源对象的属性长度相同,则循环遍历目标对象的属性和源对象的属性,如果目标对象的属性和源对象的属性不同,则返回错误提示。
58.(4)如果源对象和目标对象均为基础类型(undefined类型、number类型、boolean类型、string类型),则对源对象和目标对象进行全等比较,如果全等,则返回正确提示,如果不全等,则返回错误提示;即采用全等运算符对源对象和目标对象进行循环比较。
59.本实施例中,在进行循环遍历之前,首先判断源对象和目标对象是否为空类型,当存在空类型(null类型)时,则可以通过判断源对象和目标对象不等,快速得出源对象和目标对象不等的结论,如果源对象和目标对象不存在空类型时,则继续判断源对象和目标对象是否为引用类型(object类型),当为引用类型(object类型)时,则可以通过判断源对象
和目标对象的数组长度或者可枚举的属性长度不同,快速得出源对象和目标对象不等的结论,避免了当遇到上述极端情况还需层层遍历递归到最后的节点才能得出结论的情况;具体的,当源对象和目标对象为引用类型(object类型)时,首先判断目标对象是否为数组类型,如果为数组类型,则可以通过判断目标对象和源对象的数组长度不等,快速得出源对象和目标对象不等的结论;然后还可以通过函数object.keys()获取源对象和目标对象的可枚举的属性,通过判断源对象和目标的属性长度不等,快速得出源对象和目标对象不等的结论,整个判断逻辑紧密结合,由浅入深,进而能够快速得出比较结论,降低时空复杂度。
60.实施例2
61.本发明提供一种前端对象的比较方法,在实施例1的基础上,如果源对象和目标对象均为引用类型(object类型),则对源对象和目标对象进行数组长度比较、属性长度比较,但是当进行数组长度比较和属性长度比较时,如果出现比较错误,则会出现误判,即将属性长度相等、属性长度相等的源对象和目标对象判断为数组长度不相等或者属性长度不相等的对象,为了确保准确性,需要进行校验,具体的校验流程如下:
62.(3.11)如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度不同,则通过函数object.keys()获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则返回错误提示。
63.(3.12)如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度不同,则通过函数object.keys()获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度相同,则随机选取若干属性,依次判断选取的属性是否一一对应,如果不能一一对象,则返回错误提示。
64.(3.13)如果目标对象是数组类型,并且目标对象的数组长度和源对象的数组长度相同,则通过函数object.keys()获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则随机选取若干属性,依次判断选取的属性是否一一对应,如果不能一一对象,则返回错误提示。
65.(3.14)如果目标对象不是数组类型,则通过函数object.keys()获取源对象和目标对象的可枚举的属性,如果目标对象的属性长度和源对象的属性长度不同,则随机选取若干属性,依次判断选取的属性是否一一对应,如果不能一一对象,则返回错误提示。
66.实施例3
67.本发明提供一种前端对象的比较系统,请参阅图3,所述系统包括:数据类型判断单元、空类型数据处理单元、引用类型数据处理单元以及基础类型数据处理单元;
68.所述数据类型判断单元用于判断源对象和目标对象的数据类型;
69.所述空类型数据处理单元用于对空类型的源对象和/或目标对象进行全等比较,如果全等,则返回正确提示,如果不全等,则返回错误提示;
70.所述引用类型数据处理单元用于对引用类型的源对象和目标对象进行数组长度比较、属性长度比较,如果相同,则返回正确提示,如果不同,则返回错误提示;
71.所述基础类型数据处理单元用于对基础类型的源对象和目标对象进行全等比较,如果全等,则返回正确提示,如果不全等,则返回错误提示。
72.作为本技术一些可选实施方式,所述引用类型数据处理单元包括:
73.数组类型判断模块、数组长度判断模块、属性获取模块、属性长度判断模块;
74.所述数组类型判断模块用于判断源对象和目标对象是否为数组类型,如果目标对象是数组类型,则将源对象和目标对象传输到数组长度判断模块,如果目标对象不是数组类型,则将源对象和目标对象传输到属性获取模块;
75.所述数组长度判断单元用于判断目标对象的数组长度和源对象的数组长度是否相同,如果相同,则将源对象和目标对象传输到属性获取模块,如果不同,则返回错误提示;
76.所述属性获取模块用于获取源对象和目标对象的可枚举的属性,并且将属性传输到属性长度判断模块;
77.所述属性长度判断模块用于判断目标对象的属性长度和源对象的属性长度是否相同,如果相同,则循环遍历目标对象的属性,并且对目标对象的属性和源对象的属性进行比较,并且返回比较结果,如果不同,则返回错误提示。
78.具体的,所述前端对象的比较系统的工作原理如下:
79.①
通过数据类型判断单元获取源对象和目标对象,并且判断源对象和目标对象的数据类型;
80.如果源对象和/或目标对象为空类型,则将源对象和目标对象传输到空类型数据处理单元;
81.如果源对象和目标对象均为引用类型,则将源对象和目标对象传输到引用类型数据处理单元;
82.如果源对象和目标对象均为基础类型,则将源对象和目标对象传输到基础类型数据处理单元;
83.②
通过空类型数据处理单元对源对象和目标对象进行全等比较,如果全等,则返回正确提示,如果不全等,则返回错误提示;
84.③
通过引用类型数据处理单元的数组类型判断模块判断源对象和目标对象是否为数组类型;
85.如果目标对象是数组类型,则将源对象和目标对象传输到数组长度判断模块;
86.通过数组长度判断模块判断源对象和目标对象的数组长度是否相同,如果相同,则将源对象和目标对象传输到属性获取模块,如果不相同,则返回错误提示;
87.如果目标对象不是数组类型,则将源对象和目标对象传输到属性获取模块;
88.通过属性获取模块的函数object.keys()获取源对象和目标对象的可枚举的属性,并且将属性传输到属性长度判断模块;
89.通过属性长度判断模块判断源对象和目标对象的属性长度是否相同,如果相同,则循环遍历目标对象的属性和源对象的属性,如果目标对象的属性和源对象的属性不同,则返回错误提示;
90.④
通过基础类型数据处理单元对源对象和目标对象进行全等比较,如果全等,则返回正确提示,如果不全等,则返回错误提示。
91.实施例4
92.本发明提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器运行时执行实施例1或2所述的前端对象的比较方法。
93.本实施例提供的计算机设备可以实现执行实施例1所述的方法,为避免重复,在此
不再赘述。
94.实施例5
95.本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现实施例1或2所述的一种前端对象的比较方法。
96.本实施例提供的计算机可读存储介质可以实现执行实施例1所述的方法,为避免重复,在此不再赘述。
97.其中,所述处理器可以是中央处理器(cpu,central processing unit),还可以是其他通用处理器、数字信号处理器(digital signal processor)、专用集成电路(application specific integrated circuit)、现成可编程门阵列(field programmable gate array)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
98.所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的数据,实现发明中印制电路板缺陷检测装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。此外,存储器可以包括高速随机存取存储器、还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡,安全数字卡,闪存卡、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
99.前端对象的比较系统如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序可存储于一计算机可读存介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码、对象代码形式、可执行文件或某些中间形式等。所述计算机可读取介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存储器、点载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
100.本发明已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
101.同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
102.此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以
完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
103.计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、rf、或类似介质,或任何上述介质的组合。
104.本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c 、c#、vb.net、python等,常规程序化编程语言如c语言、visual basic、fortran 2003、perl、cobol 2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(saas)。
105.此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
106.同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
107.针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
108.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
109.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精
神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献