我尝试访问我的datajson 文件:
[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}
这是我的方法:
data[0].name;
但像这样我只得到结果:
Animals
但我需要结果:
Animals, Cats
您仅访问项目数组第 0 个索引的名称属性。要一次访问所有对象,您需要遍历数组。您可以为此使用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)
如果那是您的实际数据对象,那么data[0].name会给您“玛丽亚”。但是,如果我没看错,您想从project数组中获取所有名称。你可以用Array.map它来相当容易地做到这一点。请注意使用 ES6arrow 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.");