Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript comapare阵列是否有任何笑话匹配器<;对象>;?_Javascript_Node.js_Jestjs - Fatal编程技术网

Javascript comapare阵列是否有任何笑话匹配器<;对象>;?

Javascript comapare阵列是否有任何笑话匹配器<;对象>;?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我试图测试两个对象数组是否完全相等,使用toEqual matcher进行了尝试,但似乎它只适用于字符串数组,是否有任何matcher可用于满足该条件。请不要将此标记为重复,我没有找到明确的答案 const arr1 = [{name: 'sam', degree: 'engineer', age: '23'}, {name: 'jane', degree: 'accounts', age: '25'}] const arr2 = [{name: 'jane', degree: 'account

我试图测试两个对象数组是否完全相等,使用toEqual matcher进行了尝试,但似乎它只适用于字符串数组,是否有任何matcher可用于满足该条件。请不要将此标记为重复,我没有找到明确的答案

const arr1 = [{name: 'sam', degree: 'engineer', age: '23'}, {name: 'jane', degree: 'accounts', age: '25'}]
const arr2 = [{name: 'jane', degree: 'accounts', age: '25'},{name: 'sam', degree: 'engineer', age: '23'}]

expect(arr1).toEqual(arr2)  // should pass the testcase

你可以通过一系列的期望来解决它

expect(arr1).toBeArray();
expect(arr2).toBeArray();
expect(arr1).toBeArrayOfSize(arr2.length);
expect(arr2).toBeArrayOfSize(arr1.length);
接下来循环每个数组并检查第二个数组是否包含其元素

arr1.forEach(item => {
   expect(arr2).toContain(item);
});

这对我有用

            const sortResponseData = arr1.sort((a: any, b: any) => {
              return a.name > b.name
                ? 1
                : b.name > a.name
                ? -1
                : 0;
            });
            const sortEntityMetaData = arr2.sort((a: any, b: any) => {
              return a.name > b.name
                ? 1
                : b.name > a.name
                ? -1
                : 0;
            });
            expect(sortResponseData).toEqual(sortEntityMetaData);


toEqual
也适用于对象数组,但不适用于元素顺序错误的数组。
            const sortResponseData = arr1.sort((a: any, b: any) => {
              return a.name > b.name
                ? 1
                : b.name > a.name
                ? -1
                : 0;
            });
            const sortEntityMetaData = arr2.sort((a: any, b: any) => {
              return a.name > b.name
                ? 1
                : b.name > a.name
                ? -1
                : 0;
            });
            expect(sortResponseData).toEqual(sortEntityMetaData);