在Javascript中使数组元素为正

时间:2017-06-19 11:42:47

标签: javascript arrays

我在Javascript中有以下数组。我想找到一个数字来添加这个数组中的每个元素,以便它只包含正数。

这里我想在图表中将整个值移动到正x轴,图形应该看起来相同,但它应该只在正x轴上。

['0.000002', '-0.000007', '0.000026', '-0.000043', '-0.000029', '-0.000021', '-0.000023']

感谢。

3 个答案:

答案 0 :(得分:7)

在数学术语中,您需要数字的absolute value。在JavaScript中,Math.abs()

MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs



var positiveArray = ['0.000002', '-0.000007', '0.000026', '-0.000043', '-0.000029', '-0.000021', '-0.000023'].map(Math.abs)
console.log(positiveArray)




答案 1 :(得分:2)

使用Math.abs绝对值。请记住,这将使您的数组中的元素成为原始数组具有字符串。

var a = ['0.000002', '-0.000007', '0.000026', '-0.000043', '-0.000029', '-0.000021', '-0.000023'];
a = a.map(function(o){
   return Math.abs(o);
});

console.log(a);

答案 2 :(得分:1)

const values = ['0.000002', '-0.000007', '0.000026', '-0.000043', '-0.000029', '-0.000021', '-0.000023'];

这里的目标是找到一个正数,可以添加到数组中的每个项目,使它们都是正数。因此,最好的方法是在数组中找到最负数。这是通过首先将所有字符串化数字映射到数字形式来完成的。然后,过滤掉正数。接下来,数组按升序排序。最后,数组中的第一项是最负数。

const mostNegativeNumber = values.map(value => +value)
                                 .filter(value => value < 0)
                                 .sort((x, y) => x - y)
                                 .shift();

这里的答案是任何大于该负数的相反数字。

console.log(`Add any number that is greater than ${-mostNegativeNumber}.`);