私は2つのクラスを持っています、クリーチャークラスはプロパティとしてノード配列を持っています。しかし、生き物も配列で保持されます。私はいずれかのノードから生物のインデックスを取得することができるようにしたい。現在、私ができることは、クリーチャーのインデックスをクリーチャー自身から得ることができることです。私は、クリーチャー・クラス内の集合関数を使って、クリーチャーのクリーチャー・インデックス番号を設定し、すべてのノードのクリーチャー・インデックス番号を同じ数として設定しようとしています。配列のネストされたクラス、外側の配列のインデックスを取得したい
//Node class
class Node {
constructor(x, y, r, color, highlight, highlightColor) {
this.x = x;
this.y = y;
this.r = r || 20;
this.color = color || "#ff0";
this.highlight = highlight || false;
this.highlightColor = highlightColor || "#0000FF";
}
}
// Creature class
class Creature {
constructor(nodes, muscles, nodeColors) {
this.nodes = nodes;
this.muscles = muscles;
this.nodeColors = nodeColors || "#ff0";
Object.defineProperties(this, {
nodesArray: {
"get": (i) => this.nodes[i],
"set": nodes => {
this.nodes[i] = newNode;
}
},
musclesArray: {
"get": (i) => this.nodes[i],
"set": muscles => {
this.muscles[i] = newMuscle;
}
},
creatureNumber: {
"get":() => creatures.indexOf(this),
}
});
}
}
var nodes = [
new Node(100, 100),
new Node(200, 200)
];
var creatures = [
new Creature(nodes, muscles)
];
私は数回あなたの質問を読んでいると私はあなたがTPが達成したいのかわからないです。あなたはおそらく小さなサンプル配列を追加し、それに基づいて何を得る必要があるのかを説明できますか? – Thijs
あなたの問題を解決し、より良い性能を同時に得るためには、「array.indexOf」があまり効率的でないため、Creatureオブジェクトにidを明示的に格納することを検討する必要があります(O(N))。 – Joel
@Thijs配列はスニペットにあります。基本的には、私はこれらの2つの配列を持っています。それぞれがそれぞれのクラスを拡張します。そして各クリーチャーは一連のノードを保持します。私がしたいことは、これらのノードのうちの1つしか取ることができず、他のクリーチャーの配列の中のクリーチャーのインデックスをつかむことができることです。これが理にかなってほしい。 – Chenny