javascript - 与字典元素 typescript 进行比较

标签 javascript typescript dictionary compare

我有这样的模型:

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);
});

关于javascript - 与字典元素 typescript 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865346/

相关文章:

javascript - 使用 Angular Material 中的日期选择器禁用特定日期

javascript - ios风格的文件夹动画

angular - 无法获取字符串值的 Observable(angular2/typescript)

javascript - Typescript:忽略与基本类型并行的自定义类型

python - 将列表转换为字典,列表项作为键,列表索引作为 python 中的值

c++ - "Symbol ' 在命名空间中映射 ' could not be resolved"

javascript - 共享点 : Add css and javascript to a web part page

javascript - TypeScript:那么 "this"的范围到底是多少?

python - 为什么二级字典的值在 Python 2.7 中都指向同一个对象?

javascript - Angular Directive(指令)格式化程序/渲染器不更新