javascript - 按javascript中名为“PageName”的键的值按组从对象数组中创建一个对象
问题描述
在 javascript 输入中,按名为“PageName”的键的值按组从对象数组中创建一个对象:
[
{"pagename": "Homepage", "key": "TITLE_HEADER", "value": "Login"},
{"pagename": "OTPpage", "key": "NAVIGATION_TITLE", "value": "OTP"},
{"pagename": "Homepage", "key": "SUB_HEADER", "value": "Mobile number"},
{"pagename": "OTPPage", "key": "TITLE_HEADER", "value": "Login"},
{"pagename": "RegisterPage", "key": "USERNAME_FIELD", "value": "User name"},
{"pagename": "Homepage", "key": "SUB_HEADER2", "value": "emailId"},
{"pagename": "RegisterPage", "key": "PASSWORD_FIELD", "value": "Password"}
]
需要输出:(按页面名称分组)
{
"Homepage":{
"TITLE_HEADER":"Login",
"SUB_HEADER":"Mobile number",
"SUB_HEADER2":""emailId"
},
"OTPpage":{
"NAVIGATION_TITLE":"OTP",
"TITLE_HEADER":"Login"
},
"RegisterPage":{
"USERNAME_FIELD":"User name",
"PASSWORD_FIELD":"Password"
}
}
解决方案
那么你可以迭代它。像这样的东西:
常见forEach()
解决方案:
const input = [
{"pagename": "Homepage", "key": "TITLE_HEADER", "value": "Login"},
{"pagename": "OTPpage", "key": "NAVIGATION_TITLE", "value": "OTP"},
{"pagename": "Homepage", "key": "SUB_HEADER", "value": "Mobile number"},
{"pagename": "OTPpage", "key": "TITLE_HEADER", "value": "Login"},
{"pagename": "RegisterPage", "key": "USERNAME_FIELD", "value": "User name"},
{"pagename": "Homepage", "key": "SUB_HEADER2", "value": "emailId"},
{"pagename": "RegisterPage", "key": "PASSWORD_FIELD", "value": "Password"}
]
const result = {};
input.forEach(row => {
result[row.pagename] = {...(result[row.pagename] || {}), ...{[row.key]: row.value}}
})
console.log(result);
我创建空对象result
,遍历每个对象input
并设置键,row.pagename
而我检查是否result[row.pagename]
存在||
导致{}
如果不存在,然后传播它{[row.key]: row.value}}
导致对象合并。
如果您想使用reduce()
:
let input = [
{"pagename": "Homepage", "key": "TITLE_HEADER", "value": "Login"},
{"pagename": "OTPpage", "key": "NAVIGATION_TITLE", "value": "OTP"},
{"pagename": "Homepage", "key": "SUB_HEADER", "value": "Mobile number"},
{"pagename": "OTPpage", "key": "TITLE_HEADER", "value": "Login"},
{"pagename": "RegisterPage", "key": "USERNAME_FIELD", "value": "User name"},
{"pagename": "Homepage", "key": "SUB_HEADER2", "value": "emailId"},
{"pagename": "RegisterPage", "key": "PASSWORD_FIELD", "value": "Password"}
]
const result = input.reduce((accumulator, row) => {
accumulator[row.pagename] = {...(accumulator[row.pagename] || {}), ...{[row.key]: row.value}};
return accumulator;
}, {})
console.log(result);
推荐阅读
- php - 在 AWS AMI 实例上使用 PHPMailer 发送邮件时出现问题
- ios - 加载时集合视图未从索引 0 开始
- python - 如何测量图像中的颜色接近度/浓度?(首选python解决方案)
- vba - 在 3 列中查找重复值
- spring - Spring Batch:多个作者
- python - 从动态类中获取数据=“??????” 从 bs4
- java - 我在下面运行一个循环。它会自动跳过第一次运行并给我一个答案“无效条目”
- java - 使用带有 RecyclerView 的 Boom Menu 时应用程序崩溃
- html - 添加背景图像后,部分 CSS 将无法工作
- eclipse - 如何让 JETTY_BASE 与 Eclipse GWT 项目一起工作