繁体   English   中英

生成不同对象Javascript的对象数组

[英]Generate Array of Objects of different Objects Javascript

我有包含以下数据的严重对象:价格:

'btc-usd' : 2640, 'ltc-usd': 40, ...

加密数量:

'btc-usd': 2.533, 'ltc-usd': 10.42, ...

如何获取这些对象并创建对象数组,例如:

[ { name: 'Bitcoin', amount: 2.533, value: 2640, id: 'btc-usd' },
 { name: 'Litecoin', amount: 10.42, value: 40, id: 'ltc-usd' }, ...
]

非常感谢你的帮助!

您可以使用哈希映射(例如'btc-usd'=> {name:“ Bitcoin”,...} )创建新对象。 此哈希图可以轻松转换为数组。

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 in input){
   var values=input[key];
   for(id in values){
      if(!hash[id]) hash[id]={id:id};
      hash[id][key]=values[id];
    }
}

var output=Object.values(hash);

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

这是一个通用函数add ,它接受一个字段名和一个值对象,并将它们映射到result对象中,然后可以将其映射到数组中。

 const amounts = {btc: 123.45, eth: 123.45}; const names = {btc: 'Bitcoin', eth: 'Etherium'}; const result = {}; const add = (field, values) => { Object.keys(values).forEach(key => { // lazy initialize each object in the resultset if (!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 it console.log(Object.keys(result).map(key => result[key])); 

您可以映射其中一个对象的键以生成新的对象数组。 您只需要确保密钥在每个这些对象中即可。

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
}));
const prices = {
  'btc-usd' : 2640,
  'ltc-usd': 40
};

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

首先,创建每个缩写所代表的字典。

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

然后,用包含相关信息的对象填充一个空数组。 在每个这些对象中,名称将对应于dictionary对象中的相关键。 同时,数量和值将分别对应于amountsprices对象中的相关键。 最后, Id将对应于key本身。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM