Skip to content Skip to sidebar Skip to footer

Generate Array Of Objects Of Different Objects Javascript

I have severel Objects containing one sort of data: Prices: 'btc-usd' : 2640, 'ltc-usd': 40, ... Amount of Crypto: 'btc-usd': 2.533, 'ltc-usd': 10.42, ... How can I take these Ob

Solution 1:

You could map the keys of one of the objects to produce a new array of objects. You just have to make sure, that the key is in every of these objects.

const names = {
    'btc-usd' : 'Bitcoin', 
    'ltc-usd': 'Litecoin', 
    ...
}

const prices = {
    'btc-usd' : 2640, 
    'ltc-usd': 40, 
    ...
}

const amounts = {
    'btc-usd': 2.533, 
    'ltc-usd': 10.42, 
    ...
}

const cryptos = Object.keys(names).map((key, index) => ({
    name: names[key],
    amount: amounts[key] , 
    value: prices[key]},
    id: key
}));

Solution 2:

You could use a hash map (e.g. 'btc-usd' => {name:"Bitcoin",...}) to create new objects. This hashmap can be easily converted to an array.

var input={
  value:{'btc-usd' : 2640, 'ltc-usd': 40},
  amount:{'btc-usd': 2.533, 'ltc-usd': 10.42},
  name:{"btc-usd":"Bitcoin","ltc-usd":"Litecoin"}
};

var hash={};
for(key ininput){
   var values=input[key];
   for(idin values){
      if(!hash[id]) hash[id]={id:id};
      hash[id][key]=values[id];
    }
}

var output=Object.values(hash);

http://jsbin.com/fadapafaca/edit?console

Solution 3:

Here's a generalized function, add, that accepts a field name and an object of values and maps them into a result object which can then be mapped into an array.

const amounts = {btc: 123.45, eth: 123.45};
const names = {btc: 'Bitcoin', eth: 'Etherium'};

const result = {};

constadd = (field, values) => {
  Object.keys(values).forEach(key => {
    // lazy initialize each object in the resultsetif (!result[key]) {
      result[key] = {id: key};
    }

    // insert the data into the field for the key
    result[key][field] = values[key];
  });
}

add('amount', amounts);
add('name', names);

// converts the object of results to an array and logs itconsole.log(Object.keys(result).map(key => result[key]));

Solution 4:

const prices = {
  'btc-usd' : 2640,
  'ltc-usd': 40
};

const amounts = {
  'btc-usd': 2.533,
  'ltc-usd': 10.42
};

First, create a dictionary of what each abbreviation stands for.

const dictionary = {
  'btc': 'Bitcoin',
  'ltc': 'Litecoin'
};

Then, populate an empty array with objects containing the relevant information. In each of these objects, the name would correspond to the relevant key within the dictionary object. At the same time, the amount and value would correspond to the relevant key within the amounts and prices objects respectively. Finally, the Id would correspond to the key itself.

const money = [];

for(let coin in prices) {
  money.push({
    name: dictionary[coin.substr(0, coin.indexOf('-'))],
    amount: amounts[coin],
    value: prices[coin],
    id: coin
  });
}

console.log(money);

Post a Comment for "Generate Array Of Objects Of Different Objects Javascript"