2017-06-27 49 views
0

我有一個包含一個數據排序制度若干對象: 價格:產生不同對象的對象數組的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' }, ... 
] 

非常感謝您的幫助!

回答

0

您可以映射對象之一的鍵產生對象的一個​​新的數組。你只需要確定,關鍵在於每一個這些對象。

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 
})); 
+0

非常感謝!工作完美! –

0

您可以使用哈希映射(例如'btc-usd'=> {name:「Bitcoin」,...})來創建新對象。這個hashmap可以很容易地轉換爲一個數組。

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

+0

非常感謝您的回答! –

0

這裏的一個廣義功能,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]));

+0

感謝您幫助瑞恩! –

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