Свойство объекта имеет значение null, но введенное значение - нет. Как правильно вставить значение? - PullRequest
0 голосов
/ 22 февраля 2020

Это начальное состояние, я пытался добавить свойство year: и speed: перед каждым годом и каждой скоростью и добавить все объекты в массив для обработки с помощью d3 js.

{
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);

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

Сурава близок, но мутации внутри 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. Чем меньше у вас переменных, тем стабильнее будет ваш код.

0 голосов
/ 22 февраля 2020

Попробуйте это: -

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)
...