我会使用Object.entries 和Array.prototype.reduce 遍历您的对象。
Object.entries 返回一个键/值对数组:
Object.entries({1: 2, 4: 1, 5: 2});
//=> [["1",2],["4",1],["5",2]]
使用Array.prototype.reduce,您可以返回值等于2 的键/值对的产品数组:
Object.entries({1: 2, 4: 1, 5: 2}).reduce((acc, [k, v]) =>
v === 2 ? acc.concat(k * v) : acc, []);
现在让我们创建一个函数,它接受 1)要查找的值和 2)键/值对对象:
const multKeys = (value, obj) =>
Object.entries(obj).reduce((acc, [k, v]) =>
v === value ? acc.concat(k * v) : acc, []);
console.log(multKeys(2, {1: 2, 4: 1, 5: 2}));
然后您可以通过destructuring assignment将每个产品分配给变量
var [var1, var2] = multKeys(2, {1: 2, 4: 1, 5: 2});
var1; //=> 2
var2; //=> 10