如果在对象中推送

时间:2018-04-27 09:23:57

标签: javascript

我想创建只有当每个数据集.data(londonTemp,nyTemp)的数据高于0时才包含x-amount数据集的对象。我的尝试是将if放在前面第二个数据集对象,但不能这样做。

var container = {
    temp : {
        labels: "",
        datasets: [
            { 
              label: "London", 
              type: "bar",
              data: londonTemp
            },
            {                          // this object
              label: "NY",             // to exist
              type: "line",            // only if
              data: nyTemp             // nyTemp > 0
            }
       ]
    }
};

3 个答案:

答案 0 :(得分:6)

将此对象推送到单独的if块中:

var container = {
  temp: {
    labels: "",
    datasets: [{
      label: "London",
      type: "bar",
      data: londonTemp
    }]
  }
};

if (nyTemp > 0) {
  container.temp.datasets.push({
    label: "NY",
    type: "line",
    data: nyTemp
  })
}

答案 1 :(得分:2)

另一种方法是过滤所有数据大于0的项目。

container.temp.dataset.filter(item => item.data > 0);

我个人认为使用filter比使用if + push更清晰,更强大。

答案 2 :(得分:2)

我会过滤数据> 0

var container = {
    temp : {
        labels: "",
        datasets: [
            { 
              label: "London", 
              type: "bar",
              data: 5
            },
            {                          // this object
              label: "NY",             // to exist
              type: "line",            // only if
              data: 0             // nyTemp > 0
            }
       ]
    }
};

container.temp.datasets = container.temp.datasets.filter(function(one){return one.data > 0});