• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

65
Views
Transform complex object into key value

I have an array

const arr = [
  {
    "id": 1,
    "name": "Bitcoin",
    "symbol": "BTC",
    "slug": "bitcoin",
    "rank": 1,
    "is_active": 1,
    "first_historical_data": "2013-04-28T18:47:21.000Z",
    "last_historical_data": "2022-02-18T11:39:00.000Z",
    "platform": null
  },
  {
    "id": 2,
    "name": "Litecoin",
    "symbol": "LTC",
    "slug": "litecoin",
    "rank": 20,
    "is_active": 1,
    "first_historical_data": "2013-04-28T18:47:22.000Z",
    "last_historical_data": "2022-02-18T11:39:00.000Z",
    "platform": null
  }
]

And I want to transform the array to this

{
  "BTC": "Bitcoin",
  "LTC": "Litecoin",
}

Is there a better way than this?

const result = {}
arr.reduce((accum, val) => {
  Object.assign(result, { [val.symbol]: val.name });
}, {})

console.log(result)
about 3 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Use Object.entries() an each object which will return them as an array of arrays -- each sub-array will be a key/value pair ([key, value]) then use Object.assign() to create a new object ({[key]: value}) to return. Then flatten it so they are all in one array.

const arr=[{id:1,name:"Bitcoin",symbol:"BTC",slug:"bitcoin",rank:1,is_active:1,first_historical_data:"2013-04-28T18:47:21.000Z",last_historical_data:"2022-02-18T11:39:00.000Z",platform:null},{id:2,name:"Litecoin",symbol:"LTC",slug:"litecoin",rank:20,is_active:1,first_historical_data:"2013-04-28T18:47:22.000Z",last_historical_data:"2022-02-18T11:39:00.000Z",platform:null}];

const conv = array => {
 let objects = array.map(obj => Object.entries(obj).map(([key, val]) => Object.assign({}, {[key]: val})));
 return objects.flat();
};

console.log(conv(arr));

about 3 years ago · Juan Pablo Isaza Report

0

let arr = [
  {
    "id": 1,
    "name": "Bitcoin",
    "symbol": "BTC",
    "slug": "bitcoin",
    "rank": 1,
    "is_active": 1,
    "first_historical_data": "2013-04-28T18:47:21.000Z",
    "last_historical_data": "2022-02-18T11:39:00.000Z",
    "platform": null
  },
  {
    "id": 2,
    "name": "Litecoin",
    "symbol": "LTC",
    "slug": "litecoin",
    "rank": 20,
    "is_active": 1,
    "first_historical_data": "2013-04-28T18:47:22.000Z",
    "last_historical_data": "2022-02-18T11:39:00.000Z",
    "platform": null
  }
]

// As suggested, here it is without having to create an initial array

let alternativeArray = arr.map((val) => {
  return {[val.symbol]: val.slug}
})

console.log(alternativeArray)

Here is the answer to why the object key is being set in that format: Javascript set object key by variable

about 3 years ago · Juan Pablo Isaza Report

0

The answer is

Object.fromEntries(arr.map(({symbol, name}) => [symbol, name]))
about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error