繁体   English   中英

如何仅将最终计数打印到控制台上?

[英]How can I print only the final count onto the console?

我有一个 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 文件结束。 我只想将最终计数直接打印到控制台上。 我怎样才能做到这一点?

请仔细阅读您收到的上一个问题的答案(我建议您像我一样投票):回答者说的第一件事是您需要then() 这是 D3 v7,它不使用 D3 v4 或更少的回调。 正如预期的那样,您现在正在执行的所谓行 function将为每个解析的行运行。

这是你应该做的,再次注意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 数字将是字符串,而不是数字。

如果您只想计算年龄在 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM