我尝试访问我的data
json文件:
[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}
这是我的方法:
data[0].name;
但是这样,我只能得到结果:
Animals
但是我需要结果:
Animals, Cats
答案 0 :(得分:2)
您仅访问项目数组第0个索引的name属性。 要一次访问所有对象,您需要遍历数组。 您可以为此使用Array.map。
var data = [{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}]
var out = data[0].project.map(project => project.name).toString()
console.log(out)
答案 1 :(得分:1)
如果这是您的实际数据对象,那么data[0].name
将给您“ Maria”。但是,如果我没看错,您想从project
数组中获取所有名称。您可以使用Array.map
来轻松实现。请注意,使用ES6 arrow function
可以快速轻松地获取对象并返回其名称。
var bigObject = [{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}];
var smallObject = [{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}];
console.log("Getting the names from the full array/data structure: "+bigObject[0].project.map(obj => obj.name))
console.log("Getting the names from just the project array: "+smallObject.map(obj => obj.name))
编辑:根据您对其他答案的评论,您说您需要在此功能中使用解决方案:
"render": function (data, type, row) {if(Array.isArray(data)){return data.name;}}
要实现这一点,您应该使用第一个代码片段的底部解决方案,如下所示:
var data = [{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}];
function render(data, type, row){
if(Array.isArray(data)){
return data.map(obj => obj.name);
}
};
console.log("Render returns \""+render(data)+"\" as an array.");