2017-05-10 54 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

希望帮助!