2017-05-10 100 views
0

我一直對這一整夜都感到頭痛。在JavaScript對象中獲取子數據

我有一個返回,看起來像這樣數據的服務: enter image description here

你會看到有對象了GUID,父對象下嵌套。我需要遍歷所有「GUID」對象並獲取屬性(即作者,內容等)。

GUID是動態的(我不知道它們是什麼時間提前)。它下面的屬性是已知的。

我很難搞清楚如何定位它。我似乎無法成功使用forforEach循環。

我需要使用原生JavaScript(即沒有這個jQuery)。

+0

根據嵌套級別使用嵌套'for'的簡單方法,'for(var i = 0; i Aria

回答

2

這裏是一個可能的解決方案:

var keys = Object.keys(data); 
var results = 
keys.map(
    function(key){ 
     var datum = data[key]; 
     // do whatever with the data. 
     return { 
     "author" : data["author"] 
     } 
    } 
) 
// now results is an array of {"author"} objects. 
+0

這對我有用。 –

1

var x = { 
 
    'a-45-2455': { 
 
    'author': 'Some Name' 
 
    } 
 
}; 
 
    var keys = Object.keys(x); 
 
    keys.forEach(function(key,value){ 
 
     var author = x[key]['author']; 
 
     console.log(author); 
 
    });

您可以通過這種方式訪問​​數據。 您也可以從這些值創建另一個數組並使用它。

1

爲了遍歷一個對象使用for...in

因爲我們還沒有發佈對象的代碼,這裏是虛擬對象

var x = { 
 
    'a-45-2455': { 
 
    'author': 'Some Name' 
 
    } 
 
} 
 
    for(var keys in x){ 
 
    alert(x[keys].author) 
 

 

 
}

1

如果你是一個片段使用angular嘗試angular.forEach循環來遍歷所有的GUID,否則你可以在javascript中使用每個GUID。請參閱下面的代碼片段。

var user ={ 
 
    '1': { 
 
    "name":'abc', 
 
    "age":26 
 
    }, 
 
    '2': { 
 
    "name":'def', 
 
    "age":28 
 
    } 
 
}; 
 

 
for(var key in user) { 
 
    console.log(user[key].name); 
 
}

1

我相信你可以通過所有指標採用先進的循環迭代。 a.b與javascript中的a["b"]相同。

1

這裏是另一種方式,通過JSON對象進行迭代

var obj = {a: 1, b: 2, c: {a: 1, b: 2}}; 
function walk(obj) { 
for (var key in obj) { 
if (obj.hasOwnProperty(key)) { 
    var val = obj[key]; 
    console.log(val); 

     walk(val); 
     } 
     } 
    } 
walk(obj); 

var obj = {a: 1, b: 2, c: {a: 1, b: 2}}; 
 
function walk(obj) { 
 
    for (var key in obj) { 
 
    if (obj.hasOwnProperty(key)) { 
 
     var val = obj[key]; 
 
     console.log(val); 
 
     
 
     walk(val); 
 
    } 
 
    } 
 
} 
 
walk(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

可以遍歷通這樣的對象屬性:

for(let key in Response){ 
    if(!Response.hasOwnProperty(key)) 
    continue; 
    //key will be each GUID 
    let yourObject = Response[key] //Each object in the list of objects 
} 

你可以閱讀有關for...in loops here

希望幫助!