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

生成不同对象的对象数组Javascript,javascript,arrays,lodash,javascript-objects,Javascript,Arrays,Lodash,Javascript Objects,我有几个对象,其中包含一种数据: 价格: 加密数量: '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

我有几个对象,其中包含一种数据: 价格:

加密数量:

'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:“比特币”,…})来创建新对象。此哈希映射可以轻松地转换为数组

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

这里有一个通用函数,
add
,它接受一个字段名和一个值对象,并将它们映射到一个
结果
对象,然后可以映射到一个数组中

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);
const amounts={btc:123.45,eth:123.45};
常量名称={btc:'比特币',eth:'以太'};
const result={};
常量添加=(字段、值)=>{
Object.keys(值).forEach(键=>{
//惰性初始化resultset中的每个对象
如果(!结果[键]){
结果[key]={id:key};
}
//将数据插入密钥的字段中
结果[键][字段]=值[键];
});
}
添加(“金额”,金额);
添加(‘名称’、名称);
//将结果对象转换为数组并记录它

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 dictionary = {
  'btc': 'Bitcoin',
  'ltc': 'Litecoin'
};
然后,用包含相关信息的对象填充空数组。在每个对象中,名称都对应于
字典
对象中的相关键。同时,金额和值将分别对应于
金额
价格
对象中的相关键。最后,
Id
将对应于
键本身

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

谢谢你这么快回答!
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);