与字典元素打字稿进行比较



我有这样的模型:

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('nOriginal');
array.forEach(o => {
  const bool = JSON.stringify(o.values) === JSON.stringify(o.otherValues);
  log(bool);
});
log('nEdit');
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);

相关内容

  • 没有找到相关文章

最新更新