d3.js D3:仅将分类数据记录到控制台(无法在摄取后立即记录原始数据)

iyfjxgzm  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(109)

我有一个名为text.csv的csv文件,其中包含以下内容:

shape,color,distance
circle,blue,4
square,red,2
circle,blue,7
circle,green,9
triangle,blue,1
square,green,3
octagon,blue,4

我想执行以下操作:
1.加载此数据
1.将加载的数据记录到控制台
1.按distance对加载的数据进行排序
1.记录分类数据
下面是我的代码:

<script src="https://d3js.org/d3.v7.min.js"></script>

d3.csv('test.csv', d3.autoType).then(function(data) {
    // INSPECTS THE RAW DATA
    console.log(data);

    // SORTS BY DISTANCE
    let sortedData = data.sort(function (a, b) {
        return d3.descending(a.distance, b.distance);
    })
    // LOGS SORTED DATA
    console.log(sortedData);
})

在控制台中,我看到sortedData被***记录了两次***。
未记录data变量(即原始未排序数据)。
为什么会发生这种情况?
谢谢你!

pdsfdshx

pdsfdshx1#

Array.prototype.sort会将数组排序在适当的位置。而且,您的sortedData只会指向data
因此,如果要保留两个数组(原始数组和排序后的数组),则必须复制它,例如使用structuredClone
第一个

相关问题