Javascript 对象数组加载两次而不是一次,导致图形方向混乱
我一直在尝试加载csv文件来绘制图表。下面是用于排序数组和绘制图表的代码示例Javascript 对象数组加载两次而不是一次,导致图形方向混乱,javascript,html,arrays,sorting,csv,Javascript,Html,Arrays,Sorting,Csv,我一直在尝试加载csv文件来绘制图表。下面是用于排序数组和绘制图表的代码示例 var data = []; console.log("here"); d3.csv("data.csv", function(csvData) { csvData.forEach(function (d,i) { data[i] = { first: +d.first, second: +d.second, text: d.text } });
var data = [];
console.log("here");
d3.csv("data.csv", function(csvData) {
csvData.forEach(function (d,i) {
data[i] = {
first: +d.first,
second: +d.second,
text: d.text
}
});
console.log(data);
var tmp = data;
tmp.forEach(function(d) { data.push(d); });
var sortedData = data.sort(function(a,b) {
return a.text > b.text ;
});
console.log(data);
var text = [];
d3.csv("text.csv", function(csvData) {
csvData.forEach(function (d,i) {
datam[i] = {
first: +d.textlist
}
});
console.log(text);
下面是完整图表的链接。此代码的问题是,对象数组被加载两次,即data.csv被加载两次对象数组0,对象数组1包含相同的值和2,3相同的值。如何克服这个问题并加载csv文件?我想要一个这样的情节
但我有这样一个情节
我想你的问题可能在这里:
var tmp = data;
tmp.forEach(function(d) { data.push(d); });
声明tmp
时,您正在创建对数据的引用,而不是复制它。因此,您实际上是在复制数据,因为tmp
和data
是同一个数组
相反,您需要将tmp
定义为一个新数组,如下所示:
var tmp = [];
tmp.forEach(function(d) { data.push(d); });
Jim O'Brien-如何在不重复的情况下推送数据?使用var tmp=[];要创建一个空的ArrayBial-数据现在加载一次,但结果与图表相同,输出中没有任何变化,可以按如下方式排序:var sortedData=data.sort(函数(a,b){return a.text>b.text;});赋值var tmp=[]?是-tmp
和data
是不同的变量。