これでいけるかと。
javascript
1const obj = { a:1, b:2, c:3, d:4, e:1 };
2const comparedObj = { a:2, b:1, c:1, d:5, e:1 };
3
4const entries = Object.entries(obj);
5const high = Object.fromEntries(entries.filter(([k, v]) => v > comparedObj[k]));
6const etc = Object.fromEntries(entries.filter(([k, v]) => v <= comparedObj[k]));
7
8console.log(high, etc);
追記
または、こうとか。
javascript
1const obj = { a:1, b:2, c:3, d:4, e:1 };
2const comparedObj = { a:2, b:1, c:1, d:5, e:1 };
3
4const [high, etc] = Object.entries(obj).reduce(
5 ([o1, o2], [k, v]) => [
6 v > comparedObj[k] ? { ...o1, [k]: v } : o1,
7 v <= comparedObj[k] ? { ...o2, [k]: v } : o2
8 ], [{}, {}]
9);
10
11console.log(high, etc);
追記2
lodash使うのも挙げておきますね
javascript
1const [high, etc] = _(obj)
2 .toPairs()
3 .partition(
4 ([key, value]) => value > comparedObj[key])
5 .map(_.fromPairs)
6 .value();
7