【发布时间】:2018-12-20 21:19:33
【问题描述】:
我有一个返回 JSON 响应对象的 API 调用。数据的形状有点令人困惑,我无法弄清楚运行.map() 和.filter() 以获得我想要的结果的确切对象。
.then(response => {
console.log(response); //see below for shape of data
var dataSourceInfo = response.data.included.filter(
element => element.type === "DataSource"
);
var dataSourceName = dataSourceInfo.map(function(included) {
return included["name"];
});
console.log(dataSourceName);
在这两个数组中,我试图过滤 response.data.included 以按类型查找元素。然后映射返回的过滤器以创建一个新的有序数组。在其中一个included 数组中有一个标识type 的DataSource,这是一个示例:
included: [
{
id: "2147483604",
type: "DataSource",
name: "Some DataSource"
},
我正在记录dataSourceName,但该数组只有一个预期的名称,而且它只来自第一个数组,所以就好像地图没有到达第二个data.data。知道如何让两个名称都出现在过滤后的数组中吗?
编辑:正确的响应对象在代码框里
【问题讨论】:
-
我很难理解您的问题
-
我可以看到
response是一个数组,所以response.data应该会抛出一个错误。应该是response[0].data或response.forEach/map/filter() -
预期结果是什么?
-
所以在
response[0]和response[1]的included数组之一中有一个DataSource的type元素,所以过滤器映射应该返回[ dataSourceName1, dataSourceName2] -
您为响应对象添加的文本表示一定有错误。您将其描述为 一个 元素(不是两个)的数组,并且该元素是您在其中定义
data属性两次的对象,因此只有一个可以存活(一个对象不能有两个同名的属性)。
标签: javascript arrays json