首页 > 解决方案 > 如何使用 uniqueID 排列对象的值

问题描述

我有一个带有详细信息的对象 - 姓名、电子邮件、具有唯一 ID 的联系人

{
 email_IcWDC6iyNzsQe9sPss4Yy: "xyz@gmail.com"
 email_QVXeOX1vijCtpx8mdD662: "abc@gmail.com"
 mobile_IcWDC6iyNzsQe9sPss4Yy: "223"
 mobile_QVXeOX1vijCtpx8mdD662: "122"
 name_IcWDC6iyNzsQe9sPss4Yy: "mp"
 name_QVXeOX1vijCtpx8mdD662: "pp"
}

例如:name_QVXeOX1vijCtpx8mdD662这包含 name_UniqueID 但对于一组名称、电子邮件、移动设备的表单保持不变。这些值取自前端生成的尽可能多的表单,表单具有唯一的 Id 并且已传递给它们的字段,所以我怎样才能为给定的特定唯一 ID 创建一个包含名称、电子邮件、移动设备的新对象集合.

example:

[
{
 id: "IcWDC6iyNzsQe9sPss4Yy"
 name: "mp",
 email: "",
 mobile_no: "",
},
{
 id: "QVXeOX1vijCtpx8mdD662"
 name: "pp",
 email: "",
 mobile_no: "",
},
]

标签: javascriptnode.jsreactjs

解决方案


一种方法:

const d = {
 email_IcWDC6iyNzsQe9sPss4Yy: "xyz@gmail.com",
 email_QVXeOX1vijCtpx8mdD662: "abc@gmail.com",
 mobile_IcWDC6iyNzsQe9sPss4Yy: "223",
 mobile_QVXeOX1vijCtpx8mdD662: "122",
 name_IcWDC6iyNzsQe9sPss4Yy: "mp",
 name_QVXeOX1vijCtpx8mdD662: "pp"
};

const result = Object.values(
  Object.entries(d).reduce((acc, [k, v]) => {
    const [field, id] = k.split("_", 2);
    if (!acc[id]) acc[id] = {id};
    acc[id][field] = v;
    return acc;
  }, {})
);

console.log(result);


推荐阅读