Javascript 查特赢了';我不画画。返回字符串值而不是数字值-Meteor-Chartjs

Javascript 查特赢了';我不画画。返回字符串值而不是数字值-Meteor-Chartjs,javascript,arrays,meteor,push,chart.js,Javascript,Arrays,Meteor,Push,Chart.js,所以我尝试用meteor中的chartjs构建一个饼图 我很确定问题在于这里讨论的是优先顺序 我需要这个东西按这个顺序 { value: 900.65, color:"#red", highlight: "#FF5A5E", label: "income" } { color: "#red" highlight: "#FF5A5E" label: "income" value: 900.65 } 但我是按这个顺序来的 {

所以我尝试用meteor中的chartjs构建一个饼图

我很确定问题在于这里讨论的是优先顺序

我需要这个东西按这个顺序

{
    value: 900.65,
    color:"#red",
    highlight: "#FF5A5E",
    label: "income"
}
{
    color: "#red"
    highlight: "#FF5A5E"
    label: "income"
    value: 900.65
}
但我是按这个顺序来的

{
    value: 900.65,
    color:"#red",
    highlight: "#FF5A5E",
    label: "income"
}
{
    color: "#red"
    highlight: "#FF5A5E"
    label: "income"
    value: 900.65
}
这是我的循环

    function drawExpPie(){
  data = [];
  var Task = Tasks.find({},{fields:{value:1,text:1}}).fetch();
  for(var i = 0; i < Task.length; i++)  {
    var newdataset = {
      label:Task[i].text,
      highlight: "#FCA456",
      color: "red",
      value:Task[i].value,
      };
    data.push(newdataset);
  }
  console.log(data);
  var context = document.getElementById('myExpChart').getContext('2d');
  var myPieChart = new Chart(context).Pie(data);
}

Template.exp.helpers({
  exp: function() {return Session.get("exp");}
});

Template.exp.rendered = function(){
  drawExpPie();
};
函数drawerxpie(){
数据=[];
var Task=Tasks.find({},{fields:{value:1,text:1}}).fetch();
对于(变量i=0;i
感谢您的帮助。谢谢

这把它修好了

    for(var i = 0; i < Task.length; i++)  {
    data.push({
      label: Task[i].text,
      highlight: "#FF5A5E",
      color:"#F7464A",
      value: Number(Task[i].value)
      });
  }
for(变量i=0;i
注释记号:value:Number(任务[i].value)可能也会起作用。

这解决了它

    for(var i = 0; i < Task.length; i++)  {
    data.push({
      label: Task[i].text,
      highlight: "#FF5A5E",
      color:"#F7464A",
      value: Number(Task[i].value)
      });
  }
for(变量i=0;i

注释记号:value:Number(任务[i].value)可能也会起作用。

更改
value:Task[i].value
to

 value:Task[i].value || 0,

值:任务[i]。值更改为

 value:Task[i].value || 0,

到底是什么问题?任何导致您考虑优先级的错误?javascript中的对象没有任何保证的顺序。两个对象的字段值也不同。是否有您正在谈论但未显示的阵列?我很困惑。此外,for循环无法生成第一个对象(不同的值)。属性顺序无关紧要。您试图解决的实际问题是什么?如果
data
变量实际上是一个数组,那么
data.push()
将不会“重置”数组。每次它都会附加到数组的末尾。一定有你误解的东西,或者你没有给我们看的东西。我还将重申关于对象中属性顺序的其他注释:这并不重要。如果您在顺序确实重要的地方编写代码,例如在
循环中为
-
编写一个
,则很可能是做错了。当然,像chart.js这样的代码不会依赖于对象中属性的顺序。顺便说一句,代码无意中将
数据
作为全局变量。这可能会把事情搞砸,这取决于代码的其他功能。它应该是
var data=[]。到底是什么问题?任何导致您考虑优先级的错误?javascript中的对象没有任何保证的顺序。两个对象的字段值也不同。是否有您正在谈论但未显示的阵列?我很困惑。此外,for循环无法生成第一个对象(不同的值)。属性顺序无关紧要。您试图解决的实际问题是什么?如果
data
变量实际上是一个数组,那么
data.push()
将不会“重置”数组。每次它都会附加到数组的末尾。一定有你误解的东西,或者你没有给我们看的东西。我还将重申关于对象中属性顺序的其他注释:这并不重要。如果您在顺序确实重要的地方编写代码,例如在
循环中为
-
编写一个
,则很可能是做错了。当然,像chart.js这样的代码不会依赖于对象中属性的顺序。顺便说一句,代码无意中将
数据
作为全局变量。这可能会把事情搞砸,这取决于代码的其他功能。它应该是
var data=[]。我试过了,没有骰子。我还试过label:Task[I].text | | |“”,我试过了,没有骰子。我还尝试了label:Task[I].text | |“”,