我有这个对象:
obj = {1: 2, 4: 1, 5: 2};
如何找到其他自变量中仅具有值2的键并将其相乘? 我想在这种情况下将1 * 2与5 * 2进行比较。
var1 = 1*2;
var2 = 5*2;
谢谢!
答案 0 :(得分:1)
const obj = {1: 2, 4: 1, 5: 2};
const arr = Object.keys(obj).reduce((sum, key) => {
if(obj[key] === 2) sum.push(Number(key) * 2) ;
return sum;
}, []);
console.log(arr);
然后arr
是您想要的([2, 10]
)
答案 1 :(得分:0)
我会用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
答案 2 :(得分:-1)
这很容易,即使我不太明白为什么要这么做。
obj = {1: 2, 4: 1, 5: 2};
Object.keys(obj).forEach(k => {
if(k == 2 || obj[k] == 2) console.log(k * obj[k]);
})