使用javascript将所有减号值更改为数组中的正值

时间:2018-02-12 09:15:12

标签: javascript

如何使用javascript将所有负值更改为array中的正值,例如:

const arry = [-2.5699, -1.4589, -3.2447, -6.9789 ,-9.213568];

我的结果应为[2.56, 1.45, 3.24, 6.97, 9.21]

javascript中怎么可能?

我尝试了Math.abs,但我得到了NaN

3 个答案:

答案 0 :(得分:4)

  

我尝试使用Math.abs但是我得到了NAN

使用map

var arry = [-2.5699, -1.4589, -3.2447, -6.9789 ,-9.213568];
arry = arry.map( s => Math.abs(s));

<强>演示

var arry = [-2.5699, -1.4589, -3.2447, -6.9789, -9.213568];
arry = arry.map(s => Math.abs(s));
console.log(arry);

修改

简而言之(正如@pwolaq建议的那样)

arry = arry.map(Math.abs)

修改2

错过了四舍五入的部分

var fnRound = (s) => +String(s).match(/\d+\.?\d{0,2}/)[0];

var arry = [-2.5699, -1.4589, -3.2447, -6.9789, -9.213568];
arry = arry.map(Math.abs).map( fnRound ); 

<强>演示

var fnRound = (s) => +String(s).match(/\d+\.?\d{0,2}/)[0];

var arry = [-2.5699, -1.4589, -3.2447, -6.9789, -9.213568];
arry = arry.map(Math.abs).map( fnRound ); 
console.log(arry);

正则表达式解释 /\d+\.?\d{0,2}/

  • \d+匹配小数点前的数字
  • 。?匹配小数01次。
  • \d{0,2}匹配小数点后的2位数。

答案 1 :(得分:2)

您可以使用Math.abs返回数字的绝对值。

&#13;
&#13;
const arry = [-2.5699, -1.4589, -3.2447, -6.9789, -9.213568];

const arry2 = arry.map( v => Math.floor( Math.abs(v) * 100) / 100 );

console.log(arry2);
&#13;
&#13;
&#13;

答案 2 :(得分:2)

如果你真的想要截断你的号码,而不是围绕它们,那么下面的代码就可以了:

var arry = [-2.5699, -1.4589, -3.2447, -6.9789 ,-9.213568];
arry = arry.map(value => Math.floor(Math.abs(value) * 100)/100);