Javascript 数组显示单个属性的值,但不显示完整数组

Posted

技术标签:

【中文标题】Javascript 数组显示单个属性的值,但不显示完整数组【英文标题】:Javascript Array shows value for individual property but not full array 【发布时间】:2019-10-23 13:31:31 【问题描述】:

尝试搜索但没有成功。我是 JS 新手,当然我错过了一些简单的东西。试图找出原因,当我发布到控制台时,我的数组显示为空 - 即使至少有一个属性值对。

  function getCash(denom,value)
    if (change>value&&cashRegister[denom]>=value)
       change-=value;
       cashRegister[denom]-=value;
       cashRegister[denom]=cashRegister[denom].toFixed(2);
       if (changeBack[denom]==undefined) changeBack[denom] =0;
       changeBack[denom]+=value;

// Below shows "changeBack[denom]=QUARTER 0.25" as expected 
       console.log("changeBack[denom]="+denom+" "+changeBack[denom]);

//Below shows "changeBack="  I expected to see the object, tried to stringify but still empty.
       console.log("changeBack="+changeBack);


    
  

【问题讨论】:

将调试器置于if条件并检查,我认为条件不满足。 JS 中的数组(主要)是数值数组,而不是关联数组。这就是您的密钥没有显示在记录器中的原因。 【参考方案1】:

JS 中的数组(主要)是数值数组,而不是关联数组。 这就是您的密钥没有显示在记录器中的原因。

但是由于 JS 非常灵活,而且 JS 中的数组继承自 Object,因此您可以向它们添加任意键。仍然没有使它们成为关联数组。

所以,使用对象 作为关联数组。

并且不要连接字符串和其他值来记录它们。使用多个参数:console.log("changeBack", changeBack);,这样您就可以检查控制台中的每个值。

【讨论】:

已更改为对象,现在一切正常。谢谢。'changeBack' 声明 changeBack=;【参考方案2】:

console.log("changeBack="+changeBack) 应该是console.log("changeBack=", changeBack);

来自another answer: 的其他上下文

+(string concatenation operator) with object 将调用 对象上的toString 方法和一个 string 将被返回。所以, '' + object 等价于 object.toString()。和toString 对象返回"[object Object]"

使用,,对象作为单独的参数传递给log 方法。

【讨论】:

假设你在 Chrome 中运行它,在你的第一个 console.log() 上方添加一个debugger;(或断点),然后按 F10 直到你在给你的那一行错误,然后将鼠标悬停在对象上以确保它具有您认为它应该具有的值【参考方案3】:

尝试将其作为单独的日志进行,您将看到您的对象。

console.log(changeBack);

【讨论】:

当我这样做时,我得到的只是一个空数组“[]”

以上是关于Javascript 数组显示单个属性的值,但不显示完整数组的主要内容,如果未能解决你的问题,请参考以下文章

将 PHP 数组传递给 Javascript,但不显示在源代码中

数组适配器中的 get count() 如何在不显式返回数组大小的情况下返回值?

判断JavaScript对象为null或者属性为空

如何将一个对象数组的一个属性的值分配给另一个对象数组的同名属性? - Javascript

单个 Javascript 函数在 Heroku 上不起作用

如何在 QML 中显示二维数组的值?