比较字典元素打字稿[复制]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较字典元素打字稿[复制]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我有这样的模型:
class Model {
from: number;
values: { [id: string]: number };
originalValues: { [id: string]: number };
}
然后我创建arr = Model[] = [];
我需要检查值是否与originalValues匹配,这就是我如何做到的:
for (let edited of this.arr) {
edited.model.forEach(m => {
if (Object.values(m.originalValues) == Object.values(m.values)) {
// console.log(equal);
} else {
// not equal
}
});
但即使他们是平等的,我总是得到not equal
。值和原始值的示例如下:originalValues: {11c33aaaaaaaaasafsdf33: 23.5}
我在这里做错了什么?
答案
const log = args => console.log(args);
const array = [{
values: [1, 2, 3],
otherValues: [1, 2, 3]
}, {
values: [1, 2, 3],
otherValues: [1, 2, 3, 'a', 'b', 'c']
}, {
values: [1, 2, 3],
otherValues: [3, 2, 1]
},{
values: [{ name: 'Jack' }, 'a', 'b', 'c', 1, 2, 3],
otherValues: [1, 2, 3, 'a', 'b', 'c', { name: 'Jack' }]
}];
log('
Original');
array.forEach(o => {
const bool = JSON.stringify(o.values) === JSON.stringify(o.otherValues);
log(bool);
});
log('
Edit');
array.forEach(o => {
const v1 = Object.values(o.values).sort(), v2 = Object.values(o.otherValues).sort();
const bool = JSON.stringify(v1) === JSON.stringify(v2);
log(bool);
});
另一答案
如果你只有数字,字符串,对象和数组,那么你可以简单地
JSON.stringify(originalValues)==JSON.stringify(values);
以上是关于比较字典元素打字稿[复制]的主要内容,如果未能解决你的问题,请参考以下文章
markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章