首页 > 解决方案 > 来自数组的角度映射字段,同时仅将数字转换为字符串?

问题描述

我有一个模型,需要将从下面的另一个 json 对象过滤的这个 json 映射到模型。我想将所有数值转换为字符串,但保持布尔值不变。如何动态完成?

 var users = [{
            "firstName": "john",
            "middleName": null,
            "lastName": "doe",
            "registrationNumber": 334,
            "isOld": true
        },
        {
            "firstName": "paul",
            "middleName": null,
            "lastName": "dean",
            "registrationNumber": 123,
            "isOld": true

        },
        {
            "firstName": "andrew",
            "middleName": null,
            "lastName": "mac",
            "registrationNumber": 132,
            "isOld": true
        }
    ]

这会将过滤后的数据映射到我的模型,但是数字字段仍然是数字,我需要它们作为字符串。请记住,这是动态数据,所以我可能没有数字。

this.model = {};
    users.map(item => this.model[item.key] = item.value);

标签: angulartypescript

解决方案


试试这个

let users = [{
    "firstName": "john",
    "middleName": null,
    "lastName": "doe",
    "registrationNumber": 334,
    "isOld": true
  },
  {
    "firstName": "paul",
    "middleName": null,
    "lastName": "dean",
    "registrationNumber": 123,
    "isOld": true

  },
  {
    "firstName": "andrew",
    "middleName": null,
    "lastName": "mac",
    "registrationNumber": 132,
    "isOld": true
  }
];

let arr=users.map(user =>{
 Object.keys(user).forEach((prop) =>{
  if (typeof user[prop] == "number") 
      user[prop] = String(user[prop])
  });
  return user;
});
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读