我有一个包含对象和数组的嵌套数据结构。我如何提取信息,即访问特定或多个值(或键)?例如:var data = { code: 42, i...
我有一个包含对象和数组的嵌套数据结构。如何提取信息,即访问特定值或多个值(或键)?
例如:
var data = {
code: 42,
items: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
我如何访问 name
中的第二项 items
?
以防万一,有人在 2017 年或以后看到这个问题,并寻找一种 容易记住的 如何在 JavaScript 中访问嵌套对象的 详尽博客文章, 而不会被
无法读取未定义 错误
最简单、最干净的方法是使用 Oliver Steele 的嵌套对象访问模式
const name = ((user || {}).personalInfo || {}).name;
有了这种符号,你永远不会遇到
无法读取未定义的属性“名称”
您基本上会检查用户是否存在,如果不存在,则动态创建一个空对象。这样,下一级键将 始终从存在的对象或空对象访问 ,但永远不会从未定义的对象访问。
为了能够访问嵌套数组,您可以编写自己的数组减少实用程序。
const getNestedObject = (nestedObj, pathArr) => {
return pathArr.reduce((obj, key) =>
(obj && obj[key] !== 'undefined') ? obj[key] : undefined, nestedObj);
}
// pass in your object structure as array elements
const name = getNestedObject(user, ['personalInfo', 'name']);
// to access nested array, just pass in array index as an element the path array.
const city = getNestedObject(user, ['personalInfo', 'addresses', 0, 'city']);
// this will return the city from the first address item.
还有一个优秀的类型处理最小库 typy ,可以为您完成所有这些工作。