Computer >> Máy Tính >  >> Lập trình >> Javascript

Đặt thuộc tính đối tượng một cách an toàn với các chuỗi ký hiệu dấu chấm trong JavaScript

Bạn có thể sử dụng phương pháp đặt của lodash để đặt thuộc tính ở bất kỳ cấp độ nào một cách an toàn. Đặt thuộc tính cấp đầu tiên 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 kiểm tra như lodash để truy cập.

Bạn có thể đặt 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
   }
};
_.set(obj, "a.b.foo", "test1");
_.set(obj, "a.c", { test2: "bar" });
console.log(obj);

Đầu ra

Điều này sẽ cung cấp đầu ra -

{ a: { b: { foo: 'test1' }, c: { test2: 'bar' } } }

Bạn cũng có thể viết hàm setUpdateProp của riêng mình theo cách sau -

const setUpdateProp = (object, path, value) => {
   if (path.length === 1) object[path[0]] = value;
      else if (path.length === 0) throw error;
   else {
      if (object[path[0]])
         return setUpdateProp(object[path[0]], path.slice(1), value);
      else {
         object[path[0]] = {};
         return setUpdateProp(object[path[0]], path.slice(1), value);
      }
   }
};

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"
   }
};
setUpdateProp(obj, ["level1", "level2"], "FooBar");
console.log(obj);

Đầu ra

Điều này sẽ cung cấp đầu ra -

{ level1: { level2: 'FooBar', anotherLevel2: 'bar' } }