如何仅将最终计数打印到控制台?
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 或更少的回调。您现在执行的方式是所谓的 行函数 将为每个已解析的行 运行,正如预期的那样。
这是你应该做的,再次注意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>
我有一个包含姓名和年龄的 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 或更少的回调。您现在执行的方式是所谓的 行函数 将为每个已解析的行 运行,正如预期的那样。
这是你应该做的,再次注意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>