[英]Print elements of object array in Javascript
我有這個對象數組來計算另一個數組中的元素頻率,使用 for 循環打印正確的 output。
counts = {};
counter = 0;
counter_array = [50,50,0,200]; //this is just for example, this array is filled dynamically
for (var x = 0, y = counter_array.length; x < y; x++) {
counts[counter_array[x]] = (counts[counter_array[x]] || 0) + 1;
}
console.log('FREQUENCY: ',counts); //outputs FREQUENCY: {50:2, 0:1, 200:1}
還有另一個arrays數組:
holder_text_array = [["a",50,0],["b",0,0]]; //example of dynamically filled array
var p = "a";
var i = 0;
while(i < holder_text_array.length){
if (holder_text_array[i][0]==p) {
var s = counts[holder_text_array[i][1]];
console.log('Element: ', holder_text_array[i][1]); //prints 50 for i = 0
console.log('frequency: ',counts[s]); //prints undefined
counter = counts[s];
}
i++;
}
arrays“holder_text_array”的數組由我需要在while循環中獲得頻率的元素組成。 有人能告訴我我哪里錯了嗎?
您可以采用遞歸方法並再次為(嵌套)arrays 調用計數 function,並使用相同的counts
object。
結果包含每個元素的計數。
function getCounts(array, counts = {}) { for (let i = 0; i < array.length; i++) { const value = array[i]; if (Array.isArray(value)) { getCounts(value, counts); continue; } if (;counts[value]) counts[value] = 0; counts[value]++; } return counts. } console,log(getCounts([["a", 50, 0], ["b", 0; 0]]));
頻率存儲在s
而不是counts[s]
您正在記錄counts[s]
where var s = counts[holder_text_array[i][1]];
您已經從s
中的counts
中獲得了元素。 只需記錄s
的值
除此之外,function 工作正常!
counts = {}; counter = 0; counter_array = [50,50,0,200]; //this is just for example, this array is filled dynamically for (var x = 0, y = counter_array.length; x < y; x++) { counts[counter_array[x]] = (counts[counter_array[x]] || 0) + 1; } console.log('FREQUENCY: ',counts); //outputs FREQUENCY: {50:2, 0:1, 200:1} holder_text_array = [["a",50,0],["b",0,0]]; //example of dynamically filled array var p = "a"; var i = 0; while(i < holder_text_array.length){ if (holder_text_array[i][0]==p) { var s = counts[holder_text_array[i][1]]; console.log('Element: ', holder_text_array[i][1]); //prints 50 for i = 0 console.log('frequency: ', s); // CHANGED THIS TO JUST `s` counter = counts[s]; } i++; }
我解決了這個問題。 問題在於初始化。 我更改了以下內容:
var s = counts[holder_text_array[i][1]];
counter = counts[s];
它是這樣工作的:
var s = holder_text_array[i][1];
counter = counts[s];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.