если вы не знаете React и т. д., читайте здесь. Ниже приведен тот же вопрос, но больше связанный с React и т. д.:
У меня есть несколько объектов, содержащих один тип данных: Цены:
'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' }, ...
]
Для React-программистов:
Чтобы использовать новый компонент FlatList в React, вам необходимо предоставить массив объектов.
<FlatList
data={[{key: 'a'}, {key: 'b'}]}
renderItem={({item}) => <Text>{item.key}</Text>}
/>
Я использую несколько редюсеров, которые хранят разные типы данных о криптовалюте. Цены в магазинах Reducer1:
'btc-usd' : 2640,'ltc-usd': 40`
Reducer2 хранит количество криптовалюты, которое у вас есть:
'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' }, ...
]
До сих пор я думаю, что правильный способ - сделать это в селекторе с повторным выбором. Отсутствующая часть — это часть lodash в createSelector. Удивительно, но я не нашел в Интернете ничего, объединяющего lodash и FlatList. Большое спасибо за помощь.
import { createSelector } from 'reselect';
import _ from 'lodash';
export const selectRate = (state) => state.rate;
export const selectCryptoBalance = (state) => state.cryptoBalance;
export const createCoinArray = createSelector(
selectRate, selectCryptoBalance,
(rate, cryptoBalance) => {
const coinArray = []; //better load array from state?
//IMPROVEMENT NEEDED HERE
_.forIn(selectRate, () => {
coinArray.push(_.assign({ [selectRate.id]: 0 }, cryptoBalance));
console.log('coinArray in loop ', coinArray);
});
return coinArray;
}
);
Решение сработало! здесь больше решений за помощь! Многие пользователи React оценят