我有一个axios post调用graphQL突变。作为响应,我需要创建一个数组,但是我得到了很多undefined
值。
我的代码:
const func = async (vars, update_vars) => {
await axiosFunction({ query: create_fields, variables: vars }).then(
(response) => {
if (update_vars != undefined) {
const yo = update_vars.att.map((att) => {
if (
att.label === response.data.label
)
return response.data.id;
});
console.log(yo);
}
}
);
};
update_vars
:
[
{ label: 'val 1' },
{ label: 'val 2' },
{ label: 'val 3' },
{ label: 'val 4' }
]
response.data
{
id: '112',
other_id: '352009093',
label: 'val 1'
}
{
id: '113',
other_id: '3520012',
label: 'val 2'
}
{
id: '152',
other_id: '234578',
label: 'val 13'
}
我需要yo
来返回['112', '113']
3条答案
按热度按时间30byixjq1#
您可以在
update_vars
中创建对象中所有标签属性的Set
,然后基于它们创建filter
响应。最后,Array#map
可以用来提取匹配元素的id。lo8azlld2#
如果我对你的问题理解正确的话,解决方案应该是这样的,显然它可以改进。
这段代码定义了一个名为update_var的数组数组,其中包含两行对象,每行对象有四个标签键及其对应的字符串值。
然后定义数据数组,其中包含具有id、other_id和标签键及其对应的字符串值的对象。
通过对update_var数组使用flat()方法创建一个新数组,该方法将嵌套数组展平为单个数组。
声明一个名为yo的空数组。
然后,代码使用forEach()循环遍历展平的arrayFlat的每个元素,并在循环内通过将每个对象的标签键与arrayFlat中当前元素的标签键匹配来过滤数据数组。
如果有匹配项,则将筛选后的数组的第一个元素的id键的值推送到yo数组。
最后,yo阵列记录到控制台。
这段代码本质上是根据嵌套数组(update_var)中的标签列表过滤对象(数据)数组。然后输出相应的id值。
x3naxklr3#
您可以使用
Array#filter
、Array#map
和Array#includes
方法,如下所示: