安全地訪問 JavaScript 中深度巢狀的值


你可以使用 lodash 的 get 方法來安全地獲取任何級別的屬性。 獲取一級屬性非常直接。 巢狀屬性的訪問比較棘手,你應該使用一個經過測試的庫,如 lodash。

你可以透過以下方式訪問深度巢狀物件 −

示例

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"));

輸出

將輸出 −

test
2
undefined
undefined

你還可以用以下方式編寫自己的 getProp 函式 −

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));
      }
   }
};

你可以透過傳遞一個數組來訪問 props 來使用它。

示例

var obj = {
   level1:{
      level2:{
         level3:{
            name: "Foo"
         }
      },
      anotherLevel2: "bar"
   }
};
console.log(getProp(obj, ["level1", "level2"]));

輸出

將輸出 −

{level3: {name: "Foo"}}

更新時間:27-11-2019

310 次瀏覽

啟動你的 職業生涯

完成此課程以獲得認證

開始
廣告