Javascript 与字典元素typescript进行比较

Javascript 与字典元素typescript进行比较,javascript,typescript,dictionary,compare,Javascript,Typescript,Dictionary,Compare,我有这样的模型: 类模型{ 起始:编号; 值:{[id:string]:number}; 原始值:{[id:string]:number}; } 如果您只有数字、字符串、对象和数组,那么您可以 JSON.stringify(originalValues)==JSON.stringify(values); const log=args=>console.logargs; 常量数组=[{ 值:[1,2,3], 其他值:[1、2、3] }, { 值:[1,2,3], 其他值:[1,2,3,'a'

我有这样的模型:

类模型{ 起始:编号; 值:{[id:string]:number}; 原始值:{[id:string]:number};
} 如果您只有数字、字符串、对象和数组,那么您可以

JSON.stringify(originalValues)==JSON.stringify(values);
const log=args=>console.logargs; 常量数组=[{ 值:[1,2,3], 其他值:[1、2、3] }, { 值:[1,2,3], 其他值:[1,2,3,'a','b','c'] }, { 值:[1,2,3], 其他值:[3,2,1] },{ 值:[{name:'Jack'},'a','b','c',1,2,3], 其他值:[1,2,3,'a',b',c',{name:'Jack'}] }]; 日志'\n原始'; array.forEacho=>{ const bool=JSON.stringifyo.values===JSON.stringifyo.otherValues; 洛格布尔; }; 日志“\nEdit”; array.forEacho=>{ const v1=Object.valueso.values.sort,v2=Object.valueso.otherValues.sort; const bool=JSON.stringifyv1==JSON.stringifyv2; 洛格布尔;
};您正在比较数组引用,而不是数组contents.Object.values将只获取值,而不是键,因此如果缺少键,控件将丢失。此外,由于看起来您正在使用原语,您可能会找到更快的方法。现在最大的问题是,您比较的是数组引用而不是值,因此在这种情况下,引用永远不相同。看看这个:。另外,键和值是否总是以相同的顺序排列?也许可以尝试使用JSON.stringify将值转换为字符串,然后比较字符串?请注意,只有当原始值和值的顺序相同时,这才有效。请注意:只有当键在两个对象中的顺序相同时,这才有效。您可以考虑在不满足该条件的情况下提供一个解决方案。@briosheje这是一个很好的观点,我刚刚做了一个编辑,在一定程度上满足了这一点。