找出数组中 2 个值之间的差异

Find the difference between 2 values inside array

我想找出一个对象中两个值之间的数值差异。

我的对象是这样完成的:

{ today: 9, lastMonth: 6 }

我在 every() 方法中:

const validation = Object.values(myObj).every(item => console.log(item))

每个方法都在 reduce() 方法中,因为我有一个对象数组,就像我在这里写的那样。

现在项目日志正在打印值,与之前的对象没有任何关系, 但是一个接一个,看来我不能像这样区分值:

function difference(a, b) {
  return Math.abs(a - b);
}

我的期望:

(item => difference(item))

找出对象中存在的 2 个值之间的差异

发生了什么:

不同之处在于返回 NaN,因为项目没有放在一起

编辑:我解决了主要问题,现在我有一个像这样的简单数组:

[[0,2],[4,9],[5,7]]...

似乎 Math.abs(a-b) 不适用于数组,对此有有效的解决方案吗?

如果您在调用差异函数时使用 spread syntax (...),结果应该符合预期。

我建议创建一个包装器 getDifferences() 函数来实现它:

function difference(a, b) {
  return Math.abs(a - b);
}
   
function getDifferences(arr) {
  return arr.map(el => difference(...Object.values(el)));
}

console.log(getDifferences([{ today: 9, lastMonth: 6 }]));
console.log(getDifferences([[0,2],[4,9],[5,7]]));
console.log(getDifferences([{ a: 1, b: 2 }, { x: 1, y: 3 }]));
.as-console-wrapper { max-height: 100% !important; }

您也可以使用 function.apply,这也允许您将参数数组传递给函数:

function difference(a, b) {
  return Math.abs(a - b);
}
   
function getDifferences(arr) {
  return arr.map(el => difference.apply(null, Object.values(el)));
}

console.log(getDifferences([{ today: 9, lastMonth: 6 }]));
console.log(getDifferences([[0,2],[4,9],[5,7]]));
console.log(getDifferences([{ a: 1, b: 2 }, { x: 1, y: 3 }]));
.as-console-wrapper { max-height: 100% !important; }

尝试

function difference(array) {
  var result = [];
  for(var i=0;i<array.length;i++){
   result.push(Math.abs(array[i][0]-array[i][1]));
}
return result
}
var arr = [[0,2],[4,9],[5,7]]
console.log(difference(arr))