iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
👋

Creating a Comparison Table by Matching Input and Predicted Values

に公開

Creating a Truth Table by Comparing Input and Predicted Values

What I want to do

const input = [{ code: 1 }, { code: 2 }, { code: 3 }];
const actual = [{ code: 1 }, { code: 4 }];

check(input, actual);

[
  { code: 1, result: "MATCH" }, // Match
  { code: 2, result: "OVER" },  // Excess (Input only)
  { code: 3, result: "OVER" },  // Excess (Input only)
  { code: 4, result: "LACK" },  // Deficit (Actual only)
];

Code

const input = [{ code: 1 }, { code: 2 }, { code: 3 }];
const actual = [{ code: 1 }, { code: 4 }];

class Queue<T> {
  private data: Array<T> = [];
  push = (item: T) => this.data.push(item);
  pop: T | any = () => this.data.shift();
  get length(): number {
    return this.data.length;
  }
}

function check() {
  const queue = new Queue<number>();
  /// Set all data
  input.forEach((item) => queue.push(item.code));
  actual.forEach((item) => queue.push(item.code));
  const map = new Map();
  /// Check attributes for each data
  Array.from(Array(queue.length).keys()).forEach(() => {
    const target = queue.pop();
    const matchCode = (_target: number, _list: Array<unknown>) =>
      _list.find((elem: any) => elem.code == _target);
    if (matchCode(target, input) && matchCode(target, actual)) {
      return map.set(target, "MATCH");
    }
    if (matchCode(target, input) && !matchCode(target, actual)) {
      return map.set(target, "OVER");
    }
    if (!matchCode(target, input) && matchCode(target, actual)) {
      return map.set(target, "LACK");
    }
    return {};
  });
  console.log(Array.from(map));
}
check();

// [LOG]: [[1, "MATCH"], [2, "OVER"], [3, "OVER"], [4, "LACK"]]

https://www.typescriptlang.org/play?#code/MYewdgzgLgBAlmADgV1gXhgbQN41AEwFMAuGARhgF8AaGXAkmAJitvpCNIGYqBdAKFCRYAQ2BRkIgDYwMOPB0YUadBZxgAWPv0FSRECDACKyQqYA8AFQB8dfjBiIATnABuIqIRj4PI0gEEnJxEATytbOV4AbntHZAgAC1kYAAo4TwBbUksASllbKAS4CAA6HygREpREtMycqJhYxBBEbJgAHxgRMBDklLy0AqLS8srEuAAzKH6YhwBzQlgpQjA5wv7SMGQMgCNCJ1UnReQnMBhC4rLfEuXVwqoYGModCeQwcThwPATCYABrfp2BxCaAwACOplMyTAhAA7sZIYRzFtdvtrDNYgB6bEwQCaDIBPBkAZgyAOwZAOMMgB+GQD9DIAkhggi1iCBQUBKExATgAomIErVCBl8uDEVV4tz0rySgwcvVYmIJNIWWzOcARZl+RCzIQhTVRRlxYpJbMFMIYBkRIhoXCYABZU0YhzYzEwQAgKhTKcTAHo6gHIDQCDDIByhkAwwyAeoZYoFgiEWU4QBkUiHQik1aYbis1gkciU-oQQhB+qnWRyuSlAYMgQ5DaCKk4FugBeqqi1bSWQbATVAlQBhRR9AD65crm22eyctE7UmKUACQVC5jefzAIFhYGsA1sw9HLIQ+ALhGWWS6PSXMC3YoYsgw3ZEFcWUpL8AmqWbbcUKR7i1ojNQeQAZB-jR4H0Qn+ela0DKkhSJKxbXkcEinD+iAlHS0zPlAtAAOSWv4litgAEihOSxA4zzXpMd6-gk7b-khr5IO+MBfjAACE95kY+lFdOIoHgdg+EllBJxnCacEIQBF7ITAKEAPIAGrsgASrh3GESWxEpIxpHkYQwlAfA1FQJ+35MepmkvmxspgXkXHXg4vEwQJ8GLEZokoQAMv4rYANLydeilWccMHYJQBqUHhwLgBAIDLDcIBzNGE5hhMEZRgJkr8M8Sq-AC9RAA

Discussion