Javascript ';推动';将新编号放入对象数组中
我有一个很长的日期列表存储在CSV文件中。我已经成功地使用d3.js加载了这个数据集。现在,我想向该数据集中添加另一列,其中包含列表中每个日期的随机数 我相信这个数据集是作为一个对象数组加载的。因此,我使用下面的代码尝试遍历数组。但是,我认为推送方法是错误的,因为它涉及对象Javascript ';推动';将新编号放入对象数组中,javascript,arrays,d3.js,Javascript,Arrays,D3.js,我有一个很长的日期列表存储在CSV文件中。我已经成功地使用d3.js加载了这个数据集。现在,我想向该数据集中添加另一列,其中包含列表中每个日期的随机数 我相信这个数据集是作为一个对象数组加载的。因此,我使用下面的代码尝试遍历数组。但是,我认为推送方法是错误的,因为它涉及对象 d3.csv('claims_cwy.csv', rowConverter, function(dataset) { console.log(dataset); for(var i=0; i<10;
d3.csv('claims_cwy.csv', rowConverter, function(dataset) {
console.log(dataset);
for(var i=0; i<10; i++) {
var newNumber = Math.round(Math.random() * 10);
dataset[i].push(newNumber);
}
d3.csv('claims_cwy.csv',行转换器,函数(数据集){
console.log(数据集);
对于(var i=0;i您可以尝试以下方法:
d3.csv('claims_cwy.csv', rowConverter, function(dataset) {
console.log(dataset);
for(var i=0; i<dataset.length; i++) {
var newNumber = Math.round(Math.random() * 10);
dataset[i].nameOfProperty = newNumber;
}
}
d3.csv('claims_cwy.csv',行转换器,函数(数据集){
console.log(数据集);
对于(var i=0;i您可以尝试以下方法:
d3.csv('claims_cwy.csv', rowConverter, function(dataset) {
console.log(dataset);
for(var i=0; i<dataset.length; i++) {
var newNumber = Math.round(Math.random() * 10);
dataset[i].nameOfProperty = newNumber;
}
}
d3.csv('claims_cwy.csv',行转换器,函数(数据集){
console.log(数据集);
对于(var i=0;i如果要向数组中的每个对象添加一个随机数,如下所示:
for(var i = 0; i < 10; i++) {
var newNumber = Math.round(Math.random() * 10);
dataset[i]['random_number'] = newNumber;
}
(变量i=0;i<10;i++)的
var newNumber=Math.round(Math.random()*10);
数据集[i]['random_number']=newNumber;
}
这将为每个对象创建一个名为
随机数
的新属性如果要向数组中的每个对象添加随机数,方法如下:
for(var i = 0; i < 10; i++) {
var newNumber = Math.round(Math.random() * 10);
dataset[i]['random_number'] = newNumber;
}
(变量i=0;i<10;i++)的
var newNumber=Math.round(Math.random()*10);
数据集[i]['random_number']=newNumber;
}
这将为每个对象创建一个名为
random\u number的新属性您可以使用array map()方法巧妙地完成此操作。从:
map为一个函数中的每个元素调用一次提供的回调函数
数组,并根据结果构造一个新数组
因此,对于数据集数组中的每个元素,您将返回原始属性,并添加新的随机数属性
见
值得一提的是,在使用d3时,您可以使用中的各种随机数方法中的一种,而不是Math.random()。您可以使用array map()方法巧妙地实现这一点。从: map为一个函数中的每个元素调用一次提供的回调函数 数组,并根据结果构造一个新数组 因此,对于数据集数组中的每个元素,您将返回原始属性,并添加新的随机数属性 见
值得一提的是,当您使用d3时,您可以使用中的各种随机数方法之一,而不是Math.random()。尽管这个问题有几个答案,但没有一个涉及惯用的d3: 由于您已经有了,请使用该函数更改数据数组中的对象。只需将其添加到行函数(使用
d
作为第一个参数):
下面是一个演示:
var csv=`foo,bar,baz
12,34,21
14,42,27
17,35,17`;
var数据=d3.csvParse(csv,行转换器);
函数行转换器(d){
d、 random=Math.random()*10;
返回d;
}
console.log(数据)
尽管这个问题有几个答案,但没有一个涉及惯用的D3:
由于您已经有了,请使用该函数更改数据数组中的对象。只需将其添加到行函数(使用d
作为第一个参数):
下面是一个演示:
var csv=`foo,bar,baz
12,34,21
14,42,27
17,35,17`;
var数据=d3.csvParse(csv,行转换器);
函数行转换器(d){
d、 random=Math.random()*10;
返回d;
}
console.log(数据)
最后!您可能还希望保持列
字段与对象同步,即const field=“random”;函数rowConverter(d,i,columns){if(i==0)columns.push(field);d[field]=Math.random()*10;}
。或者,如果这看起来很糟糕,您可以改为在主回调中执行。好提示。由于大多数用户甚至不知道columns
属性存在,所以我没有考虑向其添加新值。最后!您可能还希望保持columns
字段与对象同步,即const field=“random”;函数rowConverter(d,i,columns){if(i==0)columns.push(FIELD);d[FIELD]=Math.random()*10;}
。或者,如果这看起来不合适,可以在主回调中执行。这是一个很好的提示。因为大多数用户甚至不知道columns
属性存在,所以我没有考虑向它添加新值。