【发布时间】:2019-05-30 01:38:15
【问题描述】:
我尝试访问我的data json 文件:
[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}
这是我的方法:
data[0].name;
但是像这样我只得到结果:
Animals
但我需要结果:
Animals, Cats
【问题讨论】:
我尝试访问我的data json 文件:
[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}
这是我的方法:
data[0].name;
但是像这样我只得到结果:
Animals
但我需要结果:
Animals, Cats
【问题讨论】:
如果那是您的实际数据对象,那么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;}}
要实现这一点,看起来你应该像这样使用我的第一个 sn-p 的底部解决方案:
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.");
【讨论】:
您仅访问项目数组第 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 实际上正在替换project,而在您的示例中,您有数据和项目两个不同的东西。我现在不知道如何将其转移到我的代码"render": function (data, type, row) {if(Array.isArray(data)){return data.name;}}
data[0].name 是 Maria 而不是 Animals。如果您收到Animals,则表示数据实际上是your given json => project
data.map(project => project.name).toString()
data[,].name