Javascript ';推动';将新编号放入对象数组中

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;

我有一个很长的日期列表存储在CSV文件中。我已经成功地使用d3.js加载了这个数据集。现在,我想向该数据集中添加另一列,其中包含列表中每个日期的随机数

我相信这个数据集是作为一个对象数组加载的。因此,我使用下面的代码尝试遍历数组。但是,我认为推送方法是错误的,因为它涉及对象

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
属性存在,所以我没有考虑向它添加新值。