【问题标题】:Javascript Object returns junk valuesJavascript 对象返回垃圾值
【发布时间】:2012-09-05 15:42:31
【问题描述】:

我正在尝试将值分配给 javascript 对象,这样做时,一些垃圾值最终会出现在其中,这些值看起来像“push”、“pop”、“splice”等数组方法。以下是我的代码.

function myTest(){
var userArray = new Object();
var req = new Request.JSON({
url: '/myTest.php',
method: 'post',
noCache: true,
data: 'userID=999',

onSuccess: function(json){       
    for(var key in json){
      userArray = json[key];
      for (var row in userArray){
        alert(row)   // This returns values like '$family','push','pop', 'reverse' etc.
        }
    }
},
onException: function(xhr){
  alert("Unable to process your request");
},
onFailure: function(xhr){
  alert("Unable to connect to the server");
}
}).send();
}

我不确定我在这里缺少什么,但看起来我确实是。对此的任何帮助将不胜感激。

【问题讨论】:

  • 您发布的内容存在语法错误。请发布您的实际代码以避免浪费大家的时间。
  • 您可以通过在循环中检查 if (json.hasOwnProperty(key)) 来删除它们。
  • @Pointy。对此感到抱歉:) 谢谢马特。
  • 嗯,它在语法上仍然不正确。它看起来像是一堆对象文字符号和函数声明的一部分。
  • @Pointy 我不确定这里出了什么问题,但这就是我所拥有的,我不想粘贴整个代码,这会造成混淆。谢谢。

标签: javascript mootools


【解决方案1】:

永远不要在数组上使用 for...in。时期。您看到的垃圾值是数组原型的属性。

看到这个related question

【讨论】:

  • 谢谢你。错过它是我的遗憾。这解决了它。感谢您极快的反应:)
【解决方案2】:
for (var row in userArray){
        if(userArray.hasOwnProperty(row))
           alert(row) ;  
        }

详情here。基本上, for 循环将采用所有可用的属性/功能。您必须检查它是仅属于该对象还是被继承。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多