2015-11-24 50 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對象沒有任何功能。 –