Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果我比较数字并将结果赋给一个新变量,为什么JS返回NaN?_Javascript - Fatal编程技术网

Javascript 如果我比较数字并将结果赋给一个新变量,为什么JS返回NaN?

Javascript 如果我比较数字并将结果赋给一个新变量,为什么JS返回NaN?,javascript,Javascript,基本上,我在处理非常简单的数据方面有困难。当我运行以下代码时,它返回NaN,而不是分配给max的新编号 let Bought = [eurBought, usdBought, jpyBought, gbpBought, cadBought, audBought, chfBought]; let Sold = [eurSold, usdSold, jpySold, gbpSold, cadSold, audSold, chfSold]; maxBought = Math.max(...Bough

基本上,我在处理非常简单的数据方面有困难。当我运行以下代码时,它返回
NaN
,而不是分配给
max
的新编号

let Bought = [eurBought, usdBought, jpyBought, gbpBought, cadBought, audBought, chfBought];
let Sold = [eurSold, usdSold, jpySold, gbpSold, cadSold, audSold, chfSold];

maxBought = Math.max(...Bought);
    console.log(typeof(maxBought));
// returns `number`

maxSold = Math.max(...Sold);
    console.log(typeof(maxSold));
// returns `number`

let max;

if(maxBought > maxSold) {
    max = maxBought;
} else {
    max = maxSold;
}

console.log(max)
// returns `NaN`
对我来说,当我按下..中的数字时,JS没有理由返回
NaN

我还尝试了
parseFloat
maxbund
maxsall
,但它仍然返回
NaN

编辑至@宽恕评论:

我在AJAX函数中使用几个逻辑操作一个JSON文件。 我为其中一个数组变量
eurbuid
添加了代码

let resultBought = {};
let resultSold = {};

for (var i = 0; i < tradesTotal; i++) {

symbol = trades[i].fields.orderSymbol;
  // returns e.g. EUR/USD

symbolBase = symbol.slice(0, 3);
  // returns e.g. EUR

symbolCounter = symbol.slice(3, 6);
  // returns e.g. USD

lots = trades[i].fields.orderLots;
lots = Number(lots);
 // returns e.g. 1.00

orderType = trades[i].fields.orderType;
 // orderTypes 0, 2, 4 are long trades, 1, 3, 5 shorts accordingly

 // check for major pairs where XXX/YYY = defined currencies
 if (symbolBase.match(/^(EUR|GBP|AUD|CHF|JPY|USD|CAD)$/) && symbolCounter.match(/^(EUR|GBP|AUD|CHF|JPY|USD|CAD)$/)) {

 if (orderType === '0' || orderType === '2' || orderType === '4') {

 // Base currency
 if(resultBought.hasOwnProperty(symbolBase + 'VolumeBought')) {
                                resultBought[symbolBase + 'VolumeBought'] += Number(lots * 100.000);
                            }
                            else [...]
                          }
                      }

                }
                        // Update Chart.JS Trade Volume Chart with new data set here

                    var eurBought = resultBought.EURVolumeBought;
let resultbull={};
让resultSold={};
对于(var i=0;i

我将再次检查每个变量。最初我认为我使用两个
数字
,因此数组中的其他变量不再重要。

以下代码输出8,与预期一样,当购买和出售的是数字数组时

bund=[1,2,3,4];
售出=[2,4,6,8];
maxbunded=Math.max(…bunded);
console.log(typeof(maxbund));
//返回`数字`
maxsall=Math.max(…已售出);
console.log(typeof(maxsell));
//返回`数字`
让马克斯;
如果(MaxBund>MaxSeld){
max=maxbund;
}否则{
max=maxsall;
}

console.log(max)
购买的
和出售的
的值是多少?
NaN
是一个
数字
。准确显示购买和出售的值是多少。你现在给出的信息是混合的。只需控制台。记录购买和出售的值,你可能会看到你的问题。好吧,phanti的解决方案实际上只是掩盖了问题。理想情况下,您应该去修复导致值未定义的任何内容。或者,如果这是一种允许的情况,您可以按照建议过滤该值,并确保您清楚该场景中的预期结果(例如,用户是否应该知道某个值不可用,或其他什么?),这意味着问题出在别处,而不在发布的代码中。@Salman,问题在于发布的代码。如果售出的
的第一个元素是
NaN
,则得到的结果是OP is talkingabout@TKoL如果您看到问题的最新编辑,很明显,数组中的值实际上是分配到其他位置的变量。因此,如果它们被错误地分配,那么问题就发生在发布的代码之外。@ADyson但是,如果代码应该适当地处理NaN值,而不是将其作为最大值输出,那么问题仍然存在于代码中posted@TKoL但没有迹象表明它是为了“适当地处理NaN”,也没有意图这样做。事实上,OP的措辞表明,他们并不期望这种情况发生,也不理解它是如何发生的。