heybit
heybit

Reputation: 215

Making an object from an array in JavaScript

I am using Node and scrapping a website and I get the data back it comes back as a string so I make an array out of the string and the array look like below

I have an array that looks like this:

`[ [ '2011\r\n', '24"', '21"' ],
  [ '2010\r\n', '24"', '21"' ],
  [ '2009\r\n', '24"', '21"' ],
  [ '2008\r\n', '24"', '21"' ],
  [ '2007\r\n', '22"', '20"' ],
  [ '2006\r\n', '22"', '20"' ],
  [ '2005\r\n', '22"', '20"' ],
  [ '2004\r\n', '22"', '20"' ],
  [ '2003\r\n', '22"', '19"' ],
  [ '2002\r\n', '22"', '19"' ],
  [ '2001\r\n', '22"', '19"' ],
  [ '2000\r\n', '22"', '19"' ],
  [ '1999\r\n', '22"', '19"' ],
  [ '1998\r\n', '22"', '19"' ],
  [ '1997\r\n', '22"', '19"' ],
  [ '1982\r\n', '18"', '18"' ],
  [ '1981\r\n', '18"', '18"' ],
  [ '1980\r\n', '18"', '18"' ],
  [ '1979\r\n', '18"', '18"' ],
  [ '1978\r\n', '18"', '18"' ],
  [ '1977\r\n', '16"', '16"' ],
  [ '1976\r\n', '16"', '16"' ],
  [ '1975\r\n', '16"', '16"' ],
  [ '1974\r\n', '16"', '16"' ],
  [ '1973\r\n', '16"', '16"' ],
  [ '1967\r\n', '15"', '15"' ],
  [ '1966\r\n', '15"', '15"' ],
  [ '1965\r\n', '15"', '15"' ],
  [ '1964\r\n', '15"', '15"' ] ]
`

I would like to make an object out of this array that looks like this

      var car = [
        {
        "year": 2011, 
        "driver_side": '24"',
        "pass_side": '21"'
        },
        {
        "year": 2010, 
        "driver_side": '24"',
        "pass_side": '21"'
        },
        {
        "year": 2009, 
        "driver_side": '24"',
        "pass_side": '21"'
        },
        {
        "year": 2008, 
        "driver_side": '24"',
        "pass_side": '21"'
        },
        {
        "year": 2007, 
        "driver_side": '22"',
        "pass_side": '20"'
        },

        // And so on...........
  ]

Any Help? That is what I need thank you for any help

Upvotes: 1

Views: 57

Answers (3)

Ray Toal
Ray Toal

Reputation: 88378

If your array is called a, all you need is:

a.map(([year,driver_side,pass_side])=>({year, driver_side, pass_side}))

Actually, since you wanted years to be numbers, you have to tweak it just a little:

a.map(([year,driver_side,pass_side])=>({year: +year.trim(), driver_side, pass_side}))

If you are starting with a JSON string, call JSON.parse on the string to get a JavaScript array object, then use the expression above.

Upvotes: 1

Matt Mokary
Matt Mokary

Reputation: 727

var array = [ [ '2011\r\n', '24"', '21"' ] /* etc. */ ];

var cars = array.map(function (item) {
    return {
        year: parseInt(item[0], 10),
        driver_side: item[1],
        pass_side: item[2]
    };
};

Upvotes: 2

m_callens
m_callens

Reputation: 6360

const data = [ [ '2011\r\n', '24"', '21"' ],
  [ '2010\r\n', '24"', '21"' ],
  [ '2009\r\n', '24"', '21"' ],
  [ '2008\r\n', '24"', '21"' ],
  [ '2007\r\n', '22"', '20"' ],
  [ '2006\r\n', '22"', '20"' ],
  [ '2005\r\n', '22"', '20"' ],
  [ '2004\r\n', '22"', '20"' ],
  [ '2003\r\n', '22"', '19"' ],
  [ '2002\r\n', '22"', '19"' ],
  [ '2001\r\n', '22"', '19"' ],
  [ '2000\r\n', '22"', '19"' ],
  [ '1999\r\n', '22"', '19"' ],
  [ '1998\r\n', '22"', '19"' ],
  [ '1997\r\n', '22"', '19"' ],
  [ '1982\r\n', '18"', '18"' ],
  [ '1981\r\n', '18"', '18"' ],
  [ '1980\r\n', '18"', '18"' ],
  [ '1979\r\n', '18"', '18"' ],
  [ '1978\r\n', '18"', '18"' ],
  [ '1977\r\n', '16"', '16"' ],
  [ '1976\r\n', '16"', '16"' ],
  [ '1975\r\n', '16"', '16"' ],
  [ '1974\r\n', '16"', '16"' ],
  [ '1973\r\n', '16"', '16"' ],
  [ '1967\r\n', '15"', '15"' ],
  [ '1966\r\n', '15"', '15"' ],
  [ '1965\r\n', '15"', '15"' ],
  [ '1964\r\n', '15"', '15"' ] ]

const cars = []

for (const a of data) {
    cars.push({
        year: Number(a[0]),
        driver_side: a[1],
        pass_side: a[2]
    })
}

console.log(cars)

Upvotes: 1

Related Questions