【问题标题】:Object property is null, but the value entered is not. How do i insert the value properly?对象属性为空,但输入的值不是。如何正确插入值?
【发布时间】:2020-02-22 14:37:08
【问题描述】:

这是初始状态,我尝试在每年和每个速度之前添加 year: 和 speed: 属性,并将所有对象添加到数组中以使用 d3js 处理。

{
2004: "226.933"
2005: "222.807"
2006: "221.869"
2007: "223.978"
2008: "218.385"
2009: "217.668"
2010: "216.061"
2011: "214.631"
2012: "214.053"
2013: "213.845"
2014: "206.436"
2015: "209.915"
2016: "214.51"
2017: "220.605"
2018: "222.128"
2019: "223.075"
}

我创建对象数组的代码

let arr = [];
let columns = ["year","speed"]

Object.entries(results).forEach(element => {
      let imp = {};
      let x = parseInt(element)
      imp["year"] =parseInt(element[0]);
      imp["speed"]=parseFloat(element[1]);


      arr.push(imp);
});
console.log(arr);

这是我用控制台检查时得到的结果

[
0: {year: null, speed: 226.933}
1: {year: null, speed: 222.807}
2: {year: null, speed: 221.869}
3: {year: null, speed: 223.978}
4: {year: null, speed: 218.385}
5: {year: null, speed: 217.668}
6: {year: null, speed: 216.061}
7: {year: null, speed: 214.631}
8: {year: null, speed: 214.053}
9: {year: null, speed: 213.845}
10: {year: null, speed: 206.436}
11: {year: null, speed: 209.915}
12: {year: null, speed: 214.51}
13: {year: null, speed: 220.605}
14: {year: null, speed: 222.128}
15: {year: null, speed: 223.075}
]

演示:

const results = {
  2016: "214.51",
  2017: "220.605",
  2018: "222.128",
  2019: "223.075",
}

let arr = [];
let columns = ["year", "speed"]

Object.entries(results).forEach(element => {
  let imp = {};
  let x = parseInt(element)
  imp["year"] = parseInt(element[0]);
  imp["speed"] = parseFloat(element[1]);
  arr.push(imp);
});

console.log(arr);

【问题讨论】:

  • 考虑map 而不是forEach
  • 演示似乎运行良好。
  • 代码工作正常,只有没有,的json无效

标签: javascript arrays oop d3.js null


【解决方案1】:

Sourav 很接近,但map 内部不需要突变。 map 返回一个新数组:

const data = {
    2004: "226.933",
    2005: "222.807",
    2006: "221.869",
    2007: "223.978",
    2008: "218.385",
    2009: "217.668",
    2010: "216.061",
    2011: "214.631",
    2012: "214.053",
    2013: "213.845",
    2014: "206.436",
    2015: "209.915",
    2016: "214.51",
    2017: "220.605",
    2018: "222.128",
    2019: "223.075",
};


const newArray = Object.entries(data)
   .map(([year, speed]) => ({year, speed}))

console.log('data', data)
console.log('newArray', newArray)

另外,请使用const。您拥有的变量越少,您的代码就越稳定。

【讨论】:

    【解决方案2】:

    试试这个:-

    var data = {
        2004: "226.933",
        2005: "222.807",
        2006: "221.869",
        2007: "223.978",
        2008: "218.385",
        2009: "217.668",
        2010: "216.061",
        2011: "214.631",
        2012: "214.053",
        2013: "213.845",
        2014: "206.436",
        2015: "209.915",
        2016: "214.51",
        2017: "220.605",
        2018: "222.128",
        2019: "223.075",
    };
    
    
    var newArray = [];
    Object.entries(data).map(function(item){
        newArray.push({year:item[0], speed:item[1]})
    })
    
    console.log('data', data)
    console.log('newArray', newArray)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多