【问题标题】:parseInt duplicates object property in JavaScriptparseInt 在 JavaScript 中复制对象属性
【发布时间】:2013-09-10 14:02:38
【问题描述】:

之后

for(var i=0; i < data.length; i++) {
    data[i].dummyProp = parseInt(data[i].dummyProp);
}

我得到双属性名称:

data: Array[1]
  0: Object
    dummyProp: NaN
    dummyProp: ""

来自 Chrome 开发者工具的图片:

谁能解释一下?

【问题讨论】:

  • 你能给我们原始数据对象吗?或者更好地用你的代码创建一个小提琴?试试这个:JSBin
  • 我无法在 JS 控制台中重现此行为...&gt;&gt;&gt; var data = new Array() undefined &gt;&gt;&gt; data.push({dummyProp: "123"}); 1 &gt;&gt;&gt; data [Object { dummyProp= "123" }] &gt;&gt;&gt; for (var i = 0; i &lt; data.length; i++) { data[i].dummyProp = parseInt(data[i].dummyProp); } 123 &gt;&gt;&gt; data [Object { dummyProp= 123 }]
  • 我能想到的唯一解释是属性名称包含一些不可打印的字符。
  • 不能有一个 Object.dummyProp 和一个 Object['dummyProp'] (就像字典的行为)?在那种情况下,Chrome 的控制台可能不会显示引号?
  • 我之前的评论示例:jsfiddle.net/SbW6r.

标签: javascript object properties


【解决方案1】:

我尝试重新创建该问题,但没有成功,但我可能有一个想法,您可以进行测试:

试试这个:

for(var i=0; i < data.length; i++) {
  if(data.[i].hasOwnProperty('dummyProp')){
    data[i].dummyProp = parseInt(data[i].dummyProp);
  }
}

(只是为了检查对象是否真的具有属性,参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

另外,请给我们提供原始数据对象,以便我们检查是否还有其他内容。它真的会帮助想要帮助你的用户:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2013-04-04
    • 2010-09-10
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多