【问题标题】:Javascript Array shows value for individual property but not full arrayJavascript 数组显示单个属性的值,但不显示完整数组
【发布时间】: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 中的数组(主要)是数值数组,而不是关联数组。这就是您的密钥没有显示在记录器中的原因。

标签: javascript arrays


【解决方案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);

【讨论】:

  • 当我这样做时,我得到的只是一个空数组“[]”
猜你喜欢
  • 2018-10-12
  • 2019-10-13
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
相关资源
最近更新 更多