找出数组中 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))
我想找出一个对象中两个值之间的数值差异。
我的对象是这样完成的:
{ 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))