次のようなオブジェクトの配列があります。
var chartData = [{count: 0, idTag: "24"}
{count: 0, idTag: "25"}
{count: 0, idTag: "26"}]
私のコードはいくつかの作業を行い、数値 ( totalValue
) を生成します。totalValue
に一致する場合idTag
、そのcount
値が 1 増加します。
for (i=0; i<timesFlipped; i++) {
totalValue = runTrial();
for (j=0; j<chartData.length; j++) {
if (chartData[j].idTag === totalValue) {
chartData[j].count += 1;
break;
}
}
}
これは単純な例ですがchartData
、数十個のオブジェクトを保持でき、数十timesFlipped
万回の反復になる可能性があります。
count
これは、値の一致に基づいて値を変更する最良の方法idTag
ですか? idTag
オブジェクトの配列全体を反復せずに、正しい値を持つ配列のインデックスを見つける方法はありますか?
より多くのコンテキストが必要な場合は、私が取り組んでいるページを次に示します: http://blue.butler.edu/~aazman/coupling/
アップデート:
すべての提案をありがとう。私は自分が見たものに基づいて、独自のソリューションを形成しました。私のソリューションに私を導いたプロジェクトについてのもう少しの背景:
- idTagの長さ
chartData
と最小値は、送信をクリックしたときのユーザー入力に基づいて計算されます。 min
とが計算されるとlength
(したがって、最大の idTag がわかります)、chartData
繰り返し初期化されます。
var min = 23-5*numNickel-numPenny; //numNickel & numPenny are the user inputs
var length = 5*(2*numNickel+1)+2*numPenny;
var tempTag = min;
for (j=0;j<length;j++) {
chartData[j] = {count: 0, idTag = tempTag};
tempTag++;
}
- ゲームのルールに特有の理由により、idTag 値 (いくつあっても) は対称的に中心に配置されます
idTag:25
(例: idTags = {24, 25, 26} または idTags = {20,21,22,23,24,25, 26,27,28,29,30}. の長さに関係なく、長chartData
さは常に奇数であり、idTag:25
常に[(chartData.length-1)/2]
' 番目のインデックスになります。
したがって、 の idTagschartData
が で{20,21,22,23,24,25,26,27,28,29,30}
あり、runTrial()
を与える場合totalValue = 22
、idTag:22
常に index になります(totalValue - min)
。
そこで、chartData の初期化とカウントの増加方法を次のように変更しました。
for (j=0; j<length; j++) {
chartData[j] = {count: 0}; //based on what I'm doing with chartData next, I need each index to still be an object
}
for (i=0; i<timesFlipped; i++) {
totalValue = runTrial();
var index = totalValue - min;
chartData[index].count++;
}
だから、あなたの助けに感謝します:)