Я только что сделал это. Это может быть грязно, но все равно работает ...: P
function dump(orig){
var inspectedObjects = [];
console.log('== DUMP ==');
(function _dump(o,t){
console.log(t+' Type '+(typeof o));
for(var i in o){
if(o[i] === orig){
console.log(t+' '+i+': [recursive]');
continue;
}
var ind = 1+inspectedObjects.indexOf(o[i]);
if(ind>0) console.log(t+' '+i+': [already inspected ('+ind+')]');
else{
console.log(t+' '+i+': ('+inspectedObjects.push(o[i])+')');
_dump(o[i],t+'>>');
}
}
}(orig,'>'));
}
Затем
var a = [1,2,3], b = [a,4,5,6], c = {'x':a,'y':b};
a.push(c); dump(c);
Говорит
== DUMP ==
> Type object
> x: (1)
>>> Type object
>>> 0: (2)
>>>>> Type number
>>> 1: (3)
>>>>> Type number
>>> 2: (4)
>>>>> Type number
>>> 3: [recursive]
> y: (5)
>>> Type object
>>> 0: [already inspected (1)]
>>> 1: (6)
>>>>> Type number
>>> 2: (7)
>>>>> Type number
>>> 3: (8)
>>>>> Type number
Это говорит о том, что cx [ 3] равно c, а cx = cy [0].
Или небольшое редактирование этой функции может рассказать вам, что вам нужно ...
function findRecursive(orig){
var inspectedObjects = [];
(function _find(o,s){
for(var i in o){
if(o[i] === orig){
console.log('Found: obj.'+s.join('.')+'.'+i);
return;
}
if(inspectedObjects.indexOf(o[i])>=0) continue;
else{
inspectedObjects.push(o[i]);
s.push(i); _find(o[i],s); s.pop(i);
}
}
}(orig,[]));
}
Я испытывал это в прошлом, если значения start
и end
события не были объектами JavaScript Date
. Если вы только передали строки, начальный вид не будет работать правильно. Навигация по представлениям будет затем передавать значения через localizer
(во время изменения вида) и преобразовывать их, если это возможно. Таким образом, вы не видите их при загрузке, а затем вы видите после перехода к другому виду. Смущает и расстраивает.
Я даже написал вспомогательные методы в своем собственном коде для преобразования этих значений.
import eventData from './somefile.json';
const myData = eventData.map(event => {
event.start = new Date(event.start);
event.end = new Date(event.end);
return event;
});
Конечно, это работает только в том случае, если мои значения start
и end
являются строками, которые конструктор объекта Date
может правильно проанализировать. Важной частью (а это является в документации) является то, что эти ключи требуют надлежащих Date
значений объекта.