typescript 无法从多维数组中捕获数组数据

yacmzcpb  于 2023-02-14  发布在  TypeScript
关注(0)|答案(2)|浏览(161)

在Angular中,我从后端获得多维数组作为响应。我只想捕获一个数组数据到我的新数组中,其中只有几个值(id和fname)。我尝试了多种方法,但都不起作用。下面是详细信息。

来自后端的多维数组json响应。

{
   "data":[
      {
         "SRno":{
            "label":"newtest",
            "label1":"10 VINS"
         },
         "attachment":{
            "value":null,
            "label":null
         },
         "username":{
            "id":2,
            "fname":"test1",
            "lname":"test11"
         }        
      },
      {
         "SRno":{
            "label":"newtest1",
            "label":"10 VINS"
         },
          "attachment":{
            "value":null,
            "label":null
         },
         "username":{
            "id":3,
            "name":"test2",
            "lname":"test22"
           }
      },
      {
         "SRno":{
            "label":"newtest2",
            "label":"10 VINS"
         },
          "attachment":{
            "value":null,
            "label":null
         },
         "username":{
            "id":4,
            "name":"test3",
            "lname":"test33"
         }
      },
      {
         "SRno":{
            "label":"newtest3",
            "label":"10 VINS"
         },
          "attachment":{
            "value":null,,
            "label":null
         },
         "username":{
            "id":5,
            "name":"test4",
            "lname":"test44"
         }
      }      
   ],
   "result":null
}

预期产出:

"Newarray":[
         {
            "id":2,
            "fname":"test1"
         },
         {    
            "id":3,
            "name":"test2"
         },
         {
            "id":4,
            "name":"test3"
         },
         {
            "id":5,
            "name":"test4"
         }
        ]
kknvjkwl

kknvjkwl1#

response['data'].map(({ username: { id, fname }}) => ({ id, fname }));

如果您想在fname缺失时使用name代替fname,可以执行以下操作:

response['data'].map(({ username: { id, fname, name }}) => ({ id, fname: fname ?? name }));

看看这个操场。

2hh7jdfx

2hh7jdfx2#

以您的数据为例,将后端的变量赋值给payload,您可以这样做

const usernameObj = payload.data.map(obj => ({ id: obj.username.id, fname: obj.username.fname ?? obj.username.name }))

相关问题