访问嵌套的 JSON 对象而不在 JavaScript 中指定键
Access nested JSON object without specifying key in JavaScript
我决定通过嵌套 objects/arrays 来学习更多关于 JavaScript 循环和映射函数的知识。现在我遇到了一个与此有点相似但复杂得多的问题。
Accessing elements of JSON object without knowing the key names
这是我的 JSON:
"employees": {
"Gill Bates": {
"position": "Software Engineer",
"office": "Tokyo, Japan"
},
"Jebron Lames": {
"position": "Full-stack Developer",
"office": "Manila, Philippines"
}
}
和我的 accessJson 函数,它是嵌套 JSON 对象的著名解决方案:
function accessJson(obj) {
const result = [];
for (const prop in obj) {
const value = obj[prop];
if (typeof value === 'object') {
result.push(toArray(value));
} else {
result.push(value);
}
}
return result;
}
代码在访问 JSON 对象时运行良好。但问题是我得到的 return 看起来像这样:
其中我需要再次编写另一个函数以便 trim 并组合这些字符以获得每个员工的位置。有没有办法在不指定员工姓名的情况下获得每个员工的职位?就像这样的一行变量声明(不起作用):
let position = Object.keys(employees)[0].position;
我可以将它插入我的循环中,这样我就可以删除现有的 accessJson 函数并减少我的代码。
编辑:
请不要将我的问题标记为重复问题。我想我已经在上面提到过我的代码很好并且可以完美运行。我想得到的反馈是,我们能否将我的代码优化为一行声明,这样我们就可以摆脱 accessJson 函数并避免创建另一个将 trim 的函数并组合这些角色只是为了获得每个员工的职位。
我的问题和accessJson函数类似:
How can I access and process nested objects, arrays or JSON?
const data = {
"employees": {
"Gill Bates": {
"position": "Software Engineer",
"office": "Tokyo, Japan"
},
"Jebron Lames": {
"position": "Full-stack Developer",
"office": "Manila, Philippines"
}
}
};
const { employees } = data;
const extract = (p) => Object.keys(employees).map(name => employees[name][p]);
console.log('get every employees position', extract('position'));
console.log('get every employees office', extract('office'));
我决定通过嵌套 objects/arrays 来学习更多关于 JavaScript 循环和映射函数的知识。现在我遇到了一个与此有点相似但复杂得多的问题。
Accessing elements of JSON object without knowing the key names
这是我的 JSON:
"employees": {
"Gill Bates": {
"position": "Software Engineer",
"office": "Tokyo, Japan"
},
"Jebron Lames": {
"position": "Full-stack Developer",
"office": "Manila, Philippines"
}
}
和我的 accessJson 函数,它是嵌套 JSON 对象的著名解决方案:
function accessJson(obj) {
const result = [];
for (const prop in obj) {
const value = obj[prop];
if (typeof value === 'object') {
result.push(toArray(value));
} else {
result.push(value);
}
}
return result;
}
代码在访问 JSON 对象时运行良好。但问题是我得到的 return 看起来像这样:
其中我需要再次编写另一个函数以便 trim 并组合这些字符以获得每个员工的位置。有没有办法在不指定员工姓名的情况下获得每个员工的职位?就像这样的一行变量声明(不起作用):
let position = Object.keys(employees)[0].position;
我可以将它插入我的循环中,这样我就可以删除现有的 accessJson 函数并减少我的代码。
编辑:
请不要将我的问题标记为重复问题。我想我已经在上面提到过我的代码很好并且可以完美运行。我想得到的反馈是,我们能否将我的代码优化为一行声明,这样我们就可以摆脱 accessJson 函数并避免创建另一个将 trim 的函数并组合这些角色只是为了获得每个员工的职位。
我的问题和accessJson函数类似:
How can I access and process nested objects, arrays or JSON?
const data = {
"employees": {
"Gill Bates": {
"position": "Software Engineer",
"office": "Tokyo, Japan"
},
"Jebron Lames": {
"position": "Full-stack Developer",
"office": "Manila, Philippines"
}
}
};
const { employees } = data;
const extract = (p) => Object.keys(employees).map(name => employees[name][p]);
console.log('get every employees position', extract('position'));
console.log('get every employees office', extract('office'));