Динамично свойство набора вложенного объекта

У меня есть объект, который мог быть любым количеством уровней глубоко и мог иметь любые существующие свойства. Например:

var obj = {
    db: {
        mongodb: {
            host: 'localhost'
        }
    }
};

На этом я хотел бы установить (или перезапись) свойства как так:

set('db.mongodb.user', 'root');
// or:
set('foo.bar', 'baz');

Где строка свойства может иметь любую глубину, и значение может быть любым типом/вещью.
Объекты и массивы как значения не должны быть объединены, должен ключ свойства уже существовать.

Предыдущий пример произвел бы следующий объект:

var obj = {
    db: {
        mongodb: {
            host: 'localhost',
            user: 'root'
        }
    },
    foo: {
        bar: baz
    }
};

Как я могу осознать такую функцию?

60
задан 21 September 2013 в 23:50

2 ответа

JQuery имеет расширять метод:

https://api.jquery.com/jquery.extend /

просто передают перезаписи как объект, и он объединит два.

-1
ответ дан 1 November 2019 в 09:38

Я должен был достигнуть того же самого, но в Node.js... Так, я нашел этот хороший модуль: https://пример www.npmjs.com/package/nested-property

:

var mod = require("nested-property");
var obj = {
  a: {
    b: {
      c: {
        d: 5
      }
    }
  }
};
console.log(mod.get(obj, "a.b.c.d"));
mod.set(obj, "a.b.c.d", 6);
console.log(mod.get(obj, "a.b.c.d"));
1
ответ дан 1 November 2019 в 09:38

Другие вопросы по тегам:

Похожие вопросы: