Я не уверен, что понимаю, что вы имеете в виду, но вы можете использовать stati c properties . Однако это чистое решение JS.
Также вы, вероятно, знаете об этом, но в соответствии с нормой OOP я советую вам использовать Pascal case для name классы, поэтому я взял на себя смелость переименовать его соответствующим образом.
Pure JS Solution
class Comp {
// declare static array
static instances = [];
constructor(ipa, long, lat) {
this.address = ipa;
this.long = long;
this.lat = lat;
// to access static properties, use Class.property syntax
// populates the class's instances array with every new instance
Comp.instances.push(this);
ips.push(this.address);
}
// static method to retrieve instance based on IP
static getInstance(ip) {
return Comp.instances.find(v => v.address == ip, null);
}
getlong(){
return this.long;
};
getlat(){
return this.lat;
}
getip(){
return this.address;
}
setlatlong(inputLong, inputLat){
this.long = inputLong;
this.lat = inputLat;
return;
}
setip(inputIP){
this.address = inputIP;
}
};
comp1 = new Comp('10.0.0.1', '-77.050636', '38.889248');
comp2 = new Comp('10.0.0.2', '-78.050636', '39.889248');
console.log(Comp.getInstance('10.0.0.1')); // prints comp1
Теперь вот бит, который я не мог понять. Нет смысла проверять массив на предмет IP, а затем снова нажимать его, если он истинен.
Итак, я решил, что вы просто хотите, чтобы каждый IP был создан один раз, поэтому ...
// source and target objects
function process(src, tgt){
// gets instance of src, if it exists; else creates new one
let comp1 = Comp.getInstance(src.ipa) || new Comp(src.ipa, src.long, src.lat);
// gets instance of tgt, if it exists; else creates new one
let comp2 = Comp.getInstance(tgt.ipa) || new Comp(tgt.ipa, tgt.long, src.lat);
hits.push({
origin: { latitude: comp1.getlat(), longitude: comp1.getlong() },
destination : { latitude: comp2.getlat(), longitude: comp2.getlong() }
});
};
Вы можете выполнить команду console.log(Comp.instances)
на консоли, чтобы проверить сохраненные адреса и координаты. Другая возможная идея, если она имеет смысл, - это выброс исключения, если кто-то пытается создать экземпляр дублированного IP-адреса.