![](/img/trans.png)
[英]What is the best way to iterate through a filtered set of properties of an object in JavaScript?
[英]What is the best way to iterate properties inside a JavaScript Object?
我有以下javaScript對象:
var theData = {
"data": [
{
"name": "Event1",
"start_time": "2015-01-15T22:00:00-0200",
"end_time": "2015-01-16T07:00:00-0200",
"timezone": "America/Sao_Paulo",
"location": "Somewhere",
"id": "824583590897935"
},
{
"name": "Event2",
"start_time": "2015-01-14T22:00:00-0200",
"timezone": "America/Sao_Paulo",
"location": "Somewhere",
"id": "1522505051359796"
}
],
"paging": {
"cursors": {
"after": "MzA0MjY5OTI5NzgwODIz",
"before": "ODI0NTgzNTkwODk3OTM1"
},
"next": "https://graph.facebook.com/v2.2/217733628398158/events?access_token=CAACEdEose0cBAAW4SjUBnZB9x1Y6euJS6Bbmky2ZBfyMJ7eq4hPyy0g6lrk9itZCS2Rf2vmAmlYS6qcwIBLVs8Vm5ZBnDYbW7ldni3LdmwAqrZAjVXQrloT0nunu6brW21tBzRXyZAyLR7L2oaF14cmusoXzndsadsakvsZyAYSkjQ52g57BW3VqbAHEMQnTtq5uYb4NOHN5xa1IvdecZCgSHNHzKPWYq1VsWZB7qvQgHXvoRAZD&limit=25&after=MzA0MjY5OTI5NzgwODIz"
}
}
所以我想遍歷這個對象。 我有下面的代碼正在工作。 但是我是Javascrip的新手,所以我做的這種方式是一種高度復雜的方式。 一旦被調用了很多次,我該怎么辦呢?
for (var key in theData) {
var obj = theData[key];
for (var prop in obj) {
var eventObj = obj[prop];
for (var attribute in eventObj){
if(eventObj.hasOwnProperty(attribute)){
console.log(attribute + " = " + eventObj[attribute]);
}
}
}
}
您可以使用Object.keys
:
Object.keys(httpResponse).forEach(function (key) {
console.log(key + ' = ' + httpResponse.data[key]);
});
它更易於實現,也更具可讀性。
對於您的代碼,您可以使用如下代碼:
function scan(obj, root) {
root = root || '';
Object.keys(obj).forEach(function (key) {
if (typeof(obj[key]) === 'object') {
scan(obj[key], root + key + '.');
}
else {
console.log(root + key + ' = ' + obj[key]);
}
});
}
scan(httpResponse);
在這里,你有一個小提琴顯示上述工作的例子。
如果需要支持IE <9,則可能需要使用polyfill 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.