2

我尝试访问我的datajson 文件:

[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}

这是我的方法:

data[0].name;

但像这样我只得到结果:

Animals

但我需要结果:

Animals, Cats
4

2 回答 2

2

您仅访问项目数组第 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)

于 2019-01-03T12:59:45.293 回答
1

如果那是您的实际数据对象,那么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.");

于 2019-01-03T13:04:14.910 回答