用相同的值乘以键

时间:2019-02-15 14:28:25

标签: javascript typescript

我有这个对象:

obj = {1: 2, 4: 1, 5: 2};

如何找到其他自变量中仅具有值2的键并将其相乘? 我想在这种情况下将1 * 2与5 * 2进行比较。

var1 = 1*2;
var2 = 5*2;

谢谢!

3 个答案:

答案 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.entriesArray.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]); 
})