javascript - 仅显示复杂数组 javascript 中的实际值

标签 javascript arrays dictionary complex-numbers tofixed

这个问题类似于我之前的一个问题 ( removing objects in an object in an array javascript )。然而,不仅有数字,还有以“NaN”为实数值的复数。我认为这可能会发生,因为我使用的是大数字和 Mathjs,但我所有其他值都已经 float 到小数点后 15 位。从 console.log(realPowers) 返回的数组在控制台日志中看起来像这样:

0:0
1:91.51069578156118
2:183.02210760273937
3:277.73380284266796
4:376.47588381083307
5:481.85928667762994
6:599.6533611633058
7:752.8633763048005
8:Complex {re: NaN, im: -0.015021590179814361}
9:Complex {re: NaN, im: -0.029563247908981544}
10:Complex {re: NaN, im: -0.047829041780228475}

这很有趣,因为下面的第一行代码应该只返回复数的实数值。我正在尝试使用 toFixed 方法将这些值输入到 for 循环中以减少小数位数:

var realPowers = results.totalPower.map((x) => x && x.re ? x.re :x);

function fixPowers(realPowers) {

  var k,fixedPower,powerToFix

  for (k=0,fixedRealPowers=[]; k < realPowers.length; k++) {
    powerToFix = realPowers[k];
    fixedPower = powerToFix.toFixed(3);
    fixedRealPowers.push(fixedPower);
  }
  return fixedRealPowers
};

其中 totalPower 是原始数组。但是当我这样做时它会返回一个错误:

powerToFix.toFixed is not a function

因为 toFixed 不能用于字符串(我假设)。

我正在尝试制作一个如下所示的数组:

0:0
1:91.51069578156118
2:183.02210760273937
3:277.73380284266796
4:376.47588381083307
5:481.85928667762994
6:599.6533611633058
7:752.8633763048005
8:NaN
9:NaN
10:NaN

我能否使用相同或相似的方法减少实数的小数位数并仅保留复数的 NaN 部分?

最佳答案

问题是 NaN 在 Javascript 中被认为是错误的,所以 x && x.re 对于 的复数是 falsey >re: NaN.然后它返回 x,这是整个复数。如果要测试属性是否存在,请使用 hasOwnProperty() 方法。

function Complex(real, imag) {
  return {re: real, im: imag};
}
var results = {
  totalPower: [
    0,
    91.51069578156118,
    183.02210760273937,
    277.73380284266796,
    376.47588381083307,
    481.85928667762994,
    599.6533611633058,
    752.8633763048005,
    Complex(NaN, -0.015021590179814361),
    Complex(NaN, -0.029563247908981544),
    Complex(NaN, -0.047829041780228475)
  ]
};

var realPowers = results.totalPower.map((x) => x && x.hasOwnProperty('re') ? x.re :x);

function fixPowers() {

  var k,fixedPower,powerToFix

  for (k=0,fixedRealPowers=[]; k < realPowers.length; k++) {
    powerToFix = realPowers[k];
    fixedPower = powerToFix.toFixed(3);
    fixedRealPowers.push(fixedPower);
  }
  return fixedRealPowers
};

console.log(fixPowers());

关于javascript - 仅显示复杂数组 javascript 中的实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47839035/

相关文章:

c# - Dictionary(of T) 中的 KeyNotFound 异常

javascript - 斐波那契数生成中的 "XML Parsing Error: not well-formed"

javascript - 如何在 JS 对象定义中调用先前定义的函数?

javascript - 将 javascript 放在 header 之外有多糟糕?

javascript - Angular ng-options 发送数组值

python - 有没有办法用字典中的值替换另一个列表中的列表中的某个值?

javascript - 我想要 if else 在输入中的 focusOut 上,如果单击保存 btn 则执行其他操作

c - 无指针双向圆阵算法

php - 为什么从数据库中检索的数据被两次添加到 php 数组中?

algorithm - 构建最优字典算法