可以使用lodash库中的isEqualWith方法进行对象相等性的比较,并使用一个自定义函数来对比属性值。该自定义函数将忽略对象属性的顺序,只要属性值相等即视为相等。
示例代码:
const _ = require('lodash');
const arr1 = [{id: 1, name: 'Tom'}, {id: 2, name: 'Jerry'}]; const arr2 = [{name: 'Jerry', id: 2}, {name: 'Tom', id: 1}];
const isEqual = (a, b) => { if (_.isObject(a) && .isObject(b)) { const keysA = Object.keys(a).sort(); const keysB = Object.keys(b).sort(); if (keysA.length !== keysB.length || !.isEqual(keysA, keysB)) { return false; } return .isEqualWith(a, b, (valueA, valueB) => { if (.isArray(valueA) && _.isArray(valueB)) { return valueA.length === valueB.length && .isEqual(.sortBy(valueA), _.sortBy(valueB)); } }); } return undefined; };
console.log(_.isEqualWith(arr1, arr2, isEqual)); // true