2015-11-24 51 views
0

我有一个从c#类库返回的javascript对象。对象是简单的名称 - 值对列表。只显示来自javascript对象的对象属性

我使用

for (var myList in myListItems) { 
    console.log(myList); 
    console.log(myListItems[myList]); 
} 

以检索列表中的所有项目,但我旁边的项目,我得到了一堆的ToString方法和其他几个人,大概是从什么继承。

有没有办法删除所有这些方法,并只获取我需要的数据?

+1

没有看到更多的代码/上下文很难说清楚,但检查['hasOwnProperty'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)可能会帮帮我。 –

+1

'for ... in'将迭代对象及其原型的所有可枚举属性。如果您可以清楚地识别您不想要的属性的特征,那么可能有办法做到这一点。但是你目前的描述是不完整/模糊的。 –

+0

你有一个解决方案,但尚不清楚为什么它的工作原理。除非我们知道数据的结构并知道hasOwnProperty为什么在这种情况下起作用,否则这个问题并不真正有用。 –

回答

1

的simpliest方法是使用

var buz = { 
    fog: 'stack' 
}; 

for (var name in buz) { 
    if (buz.hasOwnProperty(name)) { 
    console.log('this is fog (' + name + ') for sure. Value: ' + buz[name]); 
    } 
    else { 
    console.log(name); // toString or something else 
    } 
} 

更多的信息在这里特别JS功能Object.prototype.hasOwnProperty():JS Mozilla Docs

+1

如果您的示例是OP代码的修改,而不是MDN文章的复制/粘贴,那么您的示例会更好。 –

+0

如果'toString'被定义在对象上呢? –

+0

@Felix Kling当然,如果toString方法是在对象本身上定义的,toString也会被定义为“internal”属性,但作为作者说,JS对象是从C#返回的,我认为它只是纯粹的JSON对象没有任何功能。 –