js实现compare
JavaScript 比较函数实现
在 JavaScript 中实现比较功能通常涉及自定义排序、对象属性比较或深度比较。以下是几种常见场景的实现方法:
基本值比较
使用严格相等运算符 === 进行简单值比较:
function compare(a, b) {
return a === b;
}
自定义排序比较
为 Array.prototype.sort() 提供比较函数,返回 -1、0 或 1:

function compareNumbers(a, b) {
return a - b; // 升序排序
}
function compareStrings(a, b) {
return a.localeCompare(b);
}
对象属性比较
根据对象特定属性进行比较:
function compareByProperty(prop) {
return function(a, b) {
if (a[prop] < b[prop]) return -1;
if (a[prop] > b[prop]) return 1;
return 0;
};
}
// 使用示例
const users = [{name: 'Alice'}, {name: 'Bob'}];
users.sort(compareByProperty('name'));
深度比较
递归比较对象或数组的所有属性:

function deepCompare(a, b) {
if (a === b) return true;
if (typeof a !== 'object' || a === null ||
typeof b !== 'object' || b === null) {
return false;
}
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) return false;
for (const key of keysA) {
if (!keysB.includes(key) || !deepCompare(a[key], b[key])) {
return false;
}
}
return true;
}
带类型转换的宽松比较
模拟 == 运算符的行为:
function looseCompare(a, b) {
if (a == null && b == null) return true;
if (a == null || b == null) return false;
return a == b;
}
日期对象比较
比较 Date 实例:
function compareDates(date1, date2) {
return date1.getTime() - date2.getTime();
}
选择哪种比较方式取决于具体使用场景,简单值比较适合基本类型,深度比较适用于复杂对象结构,而自定义排序函数则在数组排序时非常有用。






