从 JSON 对象 KEYS 创建字符串 - Vanilla JavaScript 或 lodash
Create String From JSON object KEYS - Vanilla JavaScript or lodash
需要一些帮助。
我有一个 json 对象,我想用该对象的键创建一个字符串数组。
json 对象
{
"FEATURES": {
"APP_DASHBOARD": {
"MENU_TITLE": "Dashboard",
"HEAD_TITLE": "Dashboard",
"HEAD_DESC": "Welcome to briteplan"
},
"APP_TEAM": {
"MENU_TITLE": "Teams",
"HEAD_TITLE": "Teams",
"HEAD_DESC": "",
"TOOL_TIPS": {
"TEAM_REFRESH": "Refresh teams",
"TEAM_ADD": "Add new team",
"TEAM_EDIT": "Edit team",
"TEAM_REMOVE": "Remove team",
"MEMBER_REMOVE" : "Remove team member",
"MEMBER_LEAD" : "Team lead",
"AVL_MEMBERS_REFRESH" : "Refresh available members"
},
"CONTENT": {
"TEAMS_TITLE": "Teams",
"MEMBERS_TITLE": "Members",
"AVL_MEMBERS_TITLE": "Available team members"
}
}
},
"GENERAL": {
"SEARCH_PLACEHOLDER": "Search ..."
}
}
我想生成一个如下所示的数组:
var myArray = [
'FEATURES.APP_TEAM.MENU_TITLE',
'FEATURES.APP_TEAM.HEAD_TITLE',
'FEATURES.APP_TEAM.HEAD_DESC',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REFRESH',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_ADD',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_EDIT',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REMOVE',
];
并未包含所有值,但我想您明白了。最主要的是我会知道我在对象中有 "FEATURES" 并且我会知道功能名称 "APP_TEAM",但我不知道该功能中的嵌套级别。
希望有人能帮助我。
递归:
function getKeys (o) {
var keys = [];
for (var prop in o) {
if(o.hasOwnProperty(prop)) {
if(typeof o[prop] === 'object') {
getKeys(o[prop]).forEach(function (nestedProp) {
keys.push(prop + '.' + nestedProp);
});
}
else {
keys.push(prop);
}
}
}
return keys;
}
在上述对象上,returns:
[
"FEATURES.APP_DASHBOARD.MENU_TITLE",
"FEATURES.APP_DASHBOARD.HEAD_TITLE",
"FEATURES.APP_DASHBOARD.HEAD_DESC",
"FEATURES.APP_TEAM.MENU_TITLE",
"FEATURES.APP_TEAM.HEAD_TITLE",
"FEATURES.APP_TEAM.HEAD_DESC",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REFRESH",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_ADD",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_EDIT",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REMOVE",
"FEATURES.APP_TEAM.TOOL_TIPS.MEMBER_REMOVE",
"FEATURES.APP_TEAM.TOOL_TIPS.MEMBER_LEAD",
"FEATURES.APP_TEAM.TOOL_TIPS.AVL_MEMBERS_REFRESH",
"FEATURES.APP_TEAM.CONTENT.TEAMS_TITLE",
"FEATURES.APP_TEAM.CONTENT.MEMBERS_TITLE",
"FEATURES.APP_TEAM.CONTENT.AVL_MEMBERS_TITLE",
"GENERAL.SEARCH_PLACEHOLDER"
]
需要一些帮助。
我有一个 json 对象,我想用该对象的键创建一个字符串数组。
json 对象
{
"FEATURES": {
"APP_DASHBOARD": {
"MENU_TITLE": "Dashboard",
"HEAD_TITLE": "Dashboard",
"HEAD_DESC": "Welcome to briteplan"
},
"APP_TEAM": {
"MENU_TITLE": "Teams",
"HEAD_TITLE": "Teams",
"HEAD_DESC": "",
"TOOL_TIPS": {
"TEAM_REFRESH": "Refresh teams",
"TEAM_ADD": "Add new team",
"TEAM_EDIT": "Edit team",
"TEAM_REMOVE": "Remove team",
"MEMBER_REMOVE" : "Remove team member",
"MEMBER_LEAD" : "Team lead",
"AVL_MEMBERS_REFRESH" : "Refresh available members"
},
"CONTENT": {
"TEAMS_TITLE": "Teams",
"MEMBERS_TITLE": "Members",
"AVL_MEMBERS_TITLE": "Available team members"
}
}
},
"GENERAL": {
"SEARCH_PLACEHOLDER": "Search ..."
}
}
我想生成一个如下所示的数组:
var myArray = [
'FEATURES.APP_TEAM.MENU_TITLE',
'FEATURES.APP_TEAM.HEAD_TITLE',
'FEATURES.APP_TEAM.HEAD_DESC',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REFRESH',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_ADD',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_EDIT',
'FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REMOVE',
];
并未包含所有值,但我想您明白了。最主要的是我会知道我在对象中有 "FEATURES" 并且我会知道功能名称 "APP_TEAM",但我不知道该功能中的嵌套级别。
希望有人能帮助我。
递归:
function getKeys (o) {
var keys = [];
for (var prop in o) {
if(o.hasOwnProperty(prop)) {
if(typeof o[prop] === 'object') {
getKeys(o[prop]).forEach(function (nestedProp) {
keys.push(prop + '.' + nestedProp);
});
}
else {
keys.push(prop);
}
}
}
return keys;
}
在上述对象上,returns:
[
"FEATURES.APP_DASHBOARD.MENU_TITLE",
"FEATURES.APP_DASHBOARD.HEAD_TITLE",
"FEATURES.APP_DASHBOARD.HEAD_DESC",
"FEATURES.APP_TEAM.MENU_TITLE",
"FEATURES.APP_TEAM.HEAD_TITLE",
"FEATURES.APP_TEAM.HEAD_DESC",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REFRESH",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_ADD",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_EDIT",
"FEATURES.APP_TEAM.TOOL_TIPS.TEAM_REMOVE",
"FEATURES.APP_TEAM.TOOL_TIPS.MEMBER_REMOVE",
"FEATURES.APP_TEAM.TOOL_TIPS.MEMBER_LEAD",
"FEATURES.APP_TEAM.TOOL_TIPS.AVL_MEMBERS_REFRESH",
"FEATURES.APP_TEAM.CONTENT.TEAMS_TITLE",
"FEATURES.APP_TEAM.CONTENT.MEMBERS_TITLE",
"FEATURES.APP_TEAM.CONTENT.AVL_MEMBERS_TITLE",
"GENERAL.SEARCH_PLACEHOLDER"
]