我有一個包含人名和年齡的 csv 檔案。我想統計30歲以下的人數。
我試過下面的代碼。
<script src='https://d3js.org/d3.v7.min.js'></script>
<script>
let thiscsv = 'my csv link here';
let count=0;
d3.csv(thiscsv, function(data) {
if(data.age>30)
{
count
}
console.log(count);
});
</script>
它檢查每一行并在控制臺中列印,每次添加 1 個計數,直到 csv 檔案結束為止。我只想將最終計數直接列印到控制臺上。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
請仔細閱讀您收到的上一個問題的答案(我建議您像我一樣投票):回答者說的第一件事就是您需要then(). 這是 D3 v7,它不使用 D3 v4 或更少的回呼。正如預期的那樣,您現在正在執行的所謂行函式將為每個決議的行運行。
這是你應該做的,再次注意then():
顯示代碼片段
<script src='https://d3js.org/d3.v7.min.js'></script>
<script>
let thisCsv = URL.createObjectURL(new Blob([`name,age
foo,12
bar,34
baz,63
foobar,17,
barbar,43,
barbaz,39`]));
let count = 0;
d3.csv(thisCsv, d3.autoType).then(data => {
data.forEach(d => {
if (d.age > 30) count
});
console.log(count);
});
</script>
另外,請注意d3.autoType: 如果沒有它,您的 CSV 數字將是字串,而不是數字。
uj5u.com熱心網友回復:
如果您只想計算年齡在 30 歲以上的人:
const process = data => {
const ages = data.map(({Age}) => Age) // make sure it is a number
.filter(num => num > 30)
.length
console.log("Total ppl with age above 30:",ages)
}
// uncomment when you want to read a file
// let mycsv = 'example.csv';
// d3.csv(mycsv)
//.then(function(data) {
process(data)
//})
<script src='https://d3js.org/d3.v7.min.js'></script>
<script>
const data = d3.csvParse(`PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
111,1,"Ken, Mr. James",male,34.5,0,0,330911,7.8292,,A
112,2,"Will, Mrs. James",female,47,1,0,363272,7,,B`);
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414569.html
標籤:
