Bạn có thể sử dụng phương thức get của lodash để nhận tài sản ở bất kỳ cấp độ nào một cách an toàn. Nhận các thuộc tính cấp độ đầu tiên là khá đơn giản. Quyền truy cập thuộc tính lồng nhau rất phức tạp và bạn nên sử dụng thư viện đã được thử nghiệm như lodash để truy cập.
Bạn có thể truy cập một đối tượng lồng nhau sâu theo cách sau -
Ví dụ
let _ = require("lodash"); let obj = { a: { b: { foo: "test" }, c: 2 } }; console.log(_.get(obj, "a.b.foo")); console.log(_.get(obj, "a.c")); console.log(_.get(obj, "a.test")); console.log(_.get(obj, "a.test.x"));
Đầu ra
Điều này sẽ cung cấp đầu ra -
test 2 undefined undefined
Bạn cũng có thể viết hàm getProp của riêng mình theo cách sau -
const getProp = (object, path) => { if (path.length === 1) return object[path[0]]; else if (path.length === 0) throw error; else { if (object[path[0]]) return getProp(object[path[0]], path.slice(1)); else { object[path[0]] = {}; return getProp(object[path[0]], path.slice(1)); } } };
Bạn có thể sử dụng nó bằng cách chuyển một mảng để truy cập các đạo cụ.
Ví dụ
var obj = { level1:{ level2:{ level3:{ name: "Foo" } }, anotherLevel2: "bar" } }; console.log(getProp(obj, ["level1", "level2"]));
Đầu ra
Điều này sẽ cung cấp đầu ra -
{level3: {name: "Foo"}}