根据 javascript 中名为 "PageName" 的键的值按组从对象数组创建一个对象
Create a object from array of objects by group by value of key called "PageName" in javascript
根据 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"}
]
需要 OUT PUT:(按页面名称分组)
{
"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);
使用reduce()
var list = [
{"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"}
]
var result = list.reduce((a, v) => {
a[v.pagename] = a[v.pagename] || {}
a[v.pagename][v.key] = v.value
return a
}, {})
console.log(result)
根据 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"}
]
需要 OUT PUT:(按页面名称分组)
{
"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);
使用reduce()
var list = [
{"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"}
]
var result = list.reduce((a, v) => {
a[v.pagename] = a[v.pagename] || {}
a[v.pagename][v.key] = v.value
return a
}, {})
console.log(result)