2016-03-09 2 views
0

У меня есть ключ-значение, в котором хранятся узлы и все их соединения. Массив выглядит примерно так:Пара всех ключей, имеющих одинаковые значения:

A => {C} 
B => {D} 
C => {A,F,G,H,J} 
D => {B} 
E => {F,G,H} 
F => {C,E} 
G => {C,E} 
H => {C,E} 
I => {-} 
J => {C} 
K => {-} 

Я хотел бы соединить все ключи, имеющие одинаковые значения. В этом случае F, G и H имеют одинаковые значения, а также A и J. Я хотел бы поместить их в массив что-то вроде arr = [{F, G, H}, {A, J}];

Как это можно сделать в javascript?

+0

ли значения на левых сторонах (A, B, C ....) все разные массивы? – Magrangs

+0

Да, мне жаль, если фигурные скобки запутаны, я сейчас их отредактирую. –

+0

Можете ли вы использовать фактический синтаксис Javascript при показе своей структуры данных. Я действительно не знаю, что означает ваш текущий синтаксис. Кроме того, Javascript не имеет массивов ключей/значений, поэтому меня тоже путают. И что-то вроде '{A, F, G, H, J}' не говорит нам, что это на самом деле, равно как и 'A => {C}'. – jfriend00

ответ

0

для того, чтобы решить эту проблему необходимо иметь более глубокое информацию о том, как Javascript работы

взгляд на этот код

var a = [] 
var b = [a] 
a.push(b) 

, если вы посмотрите на переменную b вы увидите, что его пустой массив. причина в том, что когда вы пытаетесь присвоить a = [b], javascript стирает ваше значение в b, потому что это круговая зависимость.

, чтобы решить эту проблему, вы должны указать a и b в пышном виде.

посмотреть на этот код

var c,d; 
Object.defineProperty(window,'c',{value : []}); 
Object.defineProperty(window,'d',{value : []}); 
c.push(d); 

теперь, если вы посмотрите на c его имеют циклическую зависимость;

для получения дополнительной информации о defineProperty

+0

Я не думаю, что это отвечает на вопрос – Magrangs

Смежные вопросы