3 回答

TA贡献1850条经验 获得超11个赞
将 Intl.Collator 与 一起使用sensitivity: 'base',这意味着等效字母的权重相同。效率比toLower. 这是一个非常高效的对象比较器,它不需要 toLower 或 JSON.stringify 并且在属性为字符串时忽略大小写。
const compareStr = new Intl.Collator(undefined, { sensitivity: 'base' }).compare;
const compare = (obj1, obj2) =>
Array.isArray(obj1)
? Array.isArray(obj2) && obj1.length === obj2.length && obj1.every((item, index) => compare(item, obj2[index]))
: obj1 instanceof Date
? obj2 instanceof Date && obj1.getDate() === obj2.getDate()
: obj1 && typeof obj1 === 'object'
? obj2 && typeof obj2 === 'object' &&
Object.getOwnPropertyNames(obj1).length === Object.getOwnPropertyNames(obj2).length &&
Object.getOwnPropertyNames(obj1).every(prop => compare(obj1[prop], obj2[prop]))
: typeof obj1 === 'string' && typeof obj2 === 'string'
? compareStr(obj1, obj2) === 0
: obj1 === obj2;
console.log(compare({ prop: 'a' }, { prop: 'A' }));
console.log(compare(['b'], ['B']));
console.log(compare('a', 'A'));
console.log(compare('B', 'b'));
console.log(compare('B', 'a'));
console.log(compare('Mismatched case', 'MisMatched Case'));

TA贡献1817条经验 获得超6个赞
使用下面的方法仅将管道符号左侧的“内容”转换为小写。
//Change to lower case from left side of | sign for content
jsonObject1.forEach(function(value, index) {
if (value.inclusionOptions) {
value.inclusionOptions.forEach(function(value2, index2) {
var tokens = value2.content.split('|');
value2.content = tokens[0].toLowerCase() + "|" + tokens[1];
});
}
});
console.log(jsonObject1);

TA贡献1871条经验 获得超13个赞
您可以将响应作为字符串并比较每个的小写版本:
function isSame(res1, res2) {
return JSON.stringify(res1).toLowerCase() == JSON.stringify(res2).toLowerCase()
}
console.log( isSame({"DATA": "X"}, {"data": "x"}) )
添加回答
举报