【问题标题】:map an array inside object of an array在数组对象内映射数组
【发布时间】:2020-10-08 11:02:12
【问题描述】:

所以我有一个包含许多键的对象数组,类似这样:

[
 { id: 1,
   phoneNumber: 12345,
   name: "John",
   underLicense: true
 },
 { id: 2,
   phoneNumber: 12345,
   name: "Jane",
   underLicense: false
 }
]

我希望它看起来像这样:

[
 { listPhone: [
    { number: 12345,
      underLicense: true
    },
    { number: 12345
      underLicense: false
    }
  ]
 }
]

因此,首先我执行 map(),然后将其推送到 listPhones

这是我的功能

  saveLicense() {
    const listPhone = this.toSend.map(x => {
      return {
          number: x.phoneNumber,
          underLicense: x.underLicense
        };
    });
    const savedPhones = [];
    savedPhones.push({listPhone: listPhone});
  }

问题是,有没有办法在 map() 方法中实现它,而不必在第二步中使用 push

【问题讨论】:

    标签: javascript arrays dictionary object push


    【解决方案1】:

    您可以直接映射到属性值的表达式。

    saveLicense() {
        const
            savedPhones = [{ listPhone: this.toSend.map(({ phoneNumber: number, underLicense }) =>
                ({ number, underLicense })
            ) }];
    }
    

    【讨论】:

      【解决方案2】:

      也许:

      saveLicense () {
        const listPhone = this.toSend.map((x) => ({
          number: x.phoneNumber,
          underLicense: x.underLicense,
        }));
        const savedPhones = [{ listPhone }];
      };
      

      【讨论】:

      • 这个很好用,但我希望它只在地图中,所以下面的答案被标记为最好的
      【解决方案3】:

      saveLicense() {
          const listPhone = this.toSend.map(x => {
            return { listPhone: {
                number: x.phoneNumber,
                underLicense: x.underLicense
                }
              };
          });
       return [listPhone]
        }

      【讨论】:

      • 试过了,但是这个让它看起来像这样:{listPhone:{number, underLicense}},{listPhone: {number, underLicense}}
      • 返回 [listPhone]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2020-05-15
      • 2021-04-18
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      相关资源
      最近更新 更多