我有對象的數組是這樣的:JS - 如何基於在對象的數組另一個鍵的值更改一個關鍵的價值
var chartData = [{count: 0, idTag: "24"}
{count: 0, idTag: "25"}
{count: 0, idTag: "26"}]
我的代碼做了一些工作,並生成一個數字(totalValue
)。如果totalValue
的idTag
相匹配,其count
被增加了一個:
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
可成千上萬的迭代。
這是根據匹配idTag
值更改count
值的最佳方法嗎?有沒有一種方法可以找到正確的idTag
值的數組的索引,而無需遍歷整個對象數組? http://blue.butler.edu/~aazman/coupling/
更新:
感謝所有的建議,如果你想要更多的上下文
這裏是我工作的頁面。基於我所看到的,我有點形成了自己的解決方案。關於這使我對我的解決方案的項目多一點背景:
- 的
chartData
和最小IDTAG值的長度是根據用戶輸入的計算,當他們點擊提交一旦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]
'指數。
因此,如果爲chartData
的idTags是{20,21,22,23,24,25,26,27,28,29,30}
,如果runTrial()
給出totalValue = 22
,然後idTag:22
將永遠在索引(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++;
}
所以感謝所有您的幫助:)
該數組由'idTag'排序? – zerkms
你可以自由改變chartData的結構嗎? – Dancrumb
@zerkms是的,數組是按idTag排序的。該數組是按順序創建的,所以它按照定義進行排序。 – azmanam