vis.js: удалить свойство элемента в наборе данных

Я использую библиотеку vis.js визуализации . У меня есть набор данных vis.js, который был создан с использованием

var nodes = new vis.DataSet([
    {id: 1, label: 'Item 1', group: "special"},
    {id: 2, label: 'Item 2'},
}

Я хотел бы удалить группу «special». Впоследствии состояние набора данных должно быть идентичным набору данных, который был создан без группы:

var nodes2 = new vis.DataSet([
    {id: 1, label: 'Item 1'},
    {id: 2, label: 'Item 2'},
}

Как удалить свойство из объекта в объекте набора данных, не удалив сам элемент?


Методы Я протестированные без успеха: nodes.update({id:1, groups: undefined}) nodes.update({id:1, groups: null}),nodes.update({id:1, groups: 0})

javascript,vis.js,

0

Ответов: 1


Методы Я протестированные без успеха: nodes.update({id:1, groups: undefined}) nodes.update({id:1, groups: null}),nodes.update({id:1, groups: 0})

10
0 принят

Vis JS объединяет значения объектов, таким образом, только добавляя / изменяя новые значения, но не удаляя существующие. Я закончил с логикой remove / insert. В вашем случае я бы сделал:

let nodes = new vis.DataSet([
  {id: 1, label: 'Item 1', group: "special"},
  {id: 2, label: 'Item 2'},
}

let nodeId = 1;
let propertyToRemove = 'group';
// get a node
let node = nodes.get(nodeId);
// remove property
delete node[propertyToRemove];

// get positions (only for nodes with x and y coordinates)
// only if x and y are not present on original node
let coordinates = vis.Network.getPositions([nodeId])[nodeId];
// copy coordinates
node = Object.assign(node, coordinates); 

// remove node
nodes.remove(nodeId);
// add cloned node
nodes.add(node);

вы можете написать этот код как функцию vis.DataSet.prototypeдля удобства

JavaScript, vis.js,