javascript - как «конкатенировать» свойство - PullRequest
2 голосов
/ 20 апреля 2020

Я получаю значения из json для сцены 3. js.

Теперь я хотел бы преобразовать данные типа "position.x: 1" в объект [position] [x] = 1.

объект [ключ] = значение не работает. Очевидно, как он делает это объектом [position.x] = 1.

Как бы я это сделал или как называется такая процедура?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2020

Для этого нет встроенной функции.

Но для этой задачи доступно множество сторонних модулей.

Например, вы можете использовать lodash х _.set. Документы: здесь , и вы также можете использовать его автономно, без добавления полного пакета lodash, используя вместо этого пакет lodash.set.

Пример Из документов:

var object = { 'a': [{ 'b': { 'c': 3 } }] };

_.set(object, 'a[0].b.c', 4);
console.log(object.a[0].b.c);
// => 4

_.set(object, ['x', '0', 'y', 'z'], 5);
console.log(object.x[0].y.z);
// => 5

Если вам не нравится _.set, есть много других вариантов тоже .

1 голос
/ 20 апреля 2020

Вы можете сделать что-то вроде этого:

var string = "position.x : 1";
var split = string.split(/\.|\:/);   // split the strig into an array by '.' and ':'
var obj = {};                        // result object

function getObject(split) {
   obj[split[0].trim()] = {};
   obj[split[0].trim()][split[1].trim()] = split[2].trim();
}

getObject(split);                    // call the function and pass the array of values

console.log( obj );                  // print the whole result object
console.log( obj['position']['x'] ); // print obj['position']['x']
...