#javascript #arrays #reactjs #react-native #for-loop
#javascript #массивы #reactjs #react-native #for-цикл
Вопрос:
Я создаю приложение react native, которое использует проверки, достигли ли цены покупки и продажи валютных пар установленных пользователем пороговых значений, а затем отправляет сообщение, установленное пользователем. Существует два ценовых порога, которые отображаются условно: цена BuyThreshold, которая представляет собой цену, о которой пользователь хочет получать уведомления, если она равна текущей рыночной цене покупки, например, 1,12343 валютной пары, например EURUSD. Другим порогом является порог продажи, который представляет собой цену, по которой пользователь хочет получать уведомления, если она равна текущей рыночной цене продажи, например, 1,12330 валютной пары, например, EURUSD. Функция не проверяет, достигнуты ли пороговые значения рыночной ценой покупки или продажи. Как я могу это сделать? Ниже приведен код:
const [clickedindex, setClickedIndex] = useState(0)
function checkCondition({BuyThreshold, SellThreshold, SMSMessage}) {
const BuyingPrice = {...currency.data.prices[clickedindex].BuyingPrice}
const SellingPrice = {...currency.data.prices[clickedindex].SellingPrice}
const currencypair = {...currency.data.prices.instrument}
const BuyThresholdarray = []
const SellThreshhold =[]
BuyThresholdarray.push(BuyThreshold)
const interval = setInterval(() => {
for (let i = 0; i < BuyThresholdarray.length; i ) {
console.log(BuyThresholdarray[i])
if(SelectedCurrencyPair) {
if (BuyingPrice >= BuyThresholdarray[i]) {
return(
console.log(SMSMessage)
)
}
else {
console.log("ALert ")
}
}
}
}, 1000);
<View>
{
// Mapping of the actual currency pairs and their ask and bid prices respectively
currency.data.prices amp;amp; currency.data.prices.map((prices, index) => {
return (
<ListItem
key={index}
onPress = {() => {setModalOpen(true);setClickedIndex(index);}}
bottomDivider>
<ListItem.Content>
<ListItem.Title>
{data.prices[index].instrument} {data.prices[index].BuyingPrice} {data.prices[index].SellingPrice}
</ListItem.Title>
</ListItem.Content>
</ListItem>
)
})
}
</View>
// Modal with textinputs for the Buy and Sell Thresholds
<Modal
visible={modalopen}
transparent={true}
animationType={"fade"}
>
<Text style={{textAlign: "center", fontWeight: "bold"}}>
Create Alert On:
</Text>
<Text style={{textAlign: "center", fontWeight: "bold"}}>
{data.prices[clickedindex].instrument}
</Text>
<Text style={{textAlign: "center"}}>
{data.prices[clickedindex].BuyingPrice}/{data.prices[clickedindex].SellingPrice}
</Text>
<Card.Divider/>
<View>
<View>
<Picker
mode= "dropdown"
selectedValue={selectedValue}
onValueChange={(itemValue, itemIndex) =>setSelectedValue(itemValue) }
>
<Picker.Item label="BuyPrice" value="BuyPrice" />
<Picker.Item label="SellPrice" value="SellPrice" />
</Picker>
</View>
{
selectedValue === "BuyPrice" ?
<TextInput
style={styles.textInputStyle}
value={BuyThreshold}
onChangeText = {(BuyThreshold) => setBuyThreshhold(BuyThreshold)}
placeholder="BuyThreshhold"
placeholderTextColor="#60605e"
numeric
clearButtonMode='always'
keyboardType='decimal-pad'
/> :
<TextInput
style={styles.textInputStyle}
value={SellThreshold}
onChangeText = {(SellThreshhold) => setSellThreshhold(SellThreshhold)}
placeholder="Sell Threshhold"
placeholderTextColor="#60605e"
numeric
clearButtonMode='always'
keyboardType='decimal-pad'
/>
}
</View>
<View style={{ flexDirection: "row", justifyContent:"center" }}>
<View style={styles.inputWrap}>
<TextInput
style={styles.messageStyle}
value={SMSMessage}
onChangeText = {(SMSMessage) => setSMSMessage(SMSMessage)}
placeholder="Message"
clearButtonMode='always'
placeholderTextColor="#60605e"
/>
</View>
</View>
<View style={{flexDirection: "row", justifyContent: "center"}}>
<View>
<TouchableOpacity style={styles.button}
onPress={() => {
if(SMSMessage.length === 0)
{
Alert.alert("Incomplete", "Enter your Alert Message")
return ;
}
createAlert();
checkCondition({BuyThreshold, SellThreshold, SMSMessage});
setModalOpen(false);
showToastWithGravityAndOffset();} }
>
<Text style={styles.buttonTitle}>OK</Text>
</TouchableOpacity>
</View>
<View>
<TouchableOpacity style={styles.button} onPress ={() => setModalOpen(false)}>
<Text>Close</Text>
</TouchableOpacity>
</View>
</View>
</View>
</View>
</Modal>
Комментарии:
1. Где это
SelectedCurrencyPair
определено? Это должно бытьcurrencypair
?2. Это недопустимый JavaScript:
const SellingPrice = {data.prices.SellingPrice}
а также в чем ваш вопрос?3. Я отредактировал вопрос
4. Вы хотите
SellingPrice
, чтобы иBuyingPrice
были массивами? Я думаю, вы хотите задать их как:const { SellingPrice, BuyingPrice } = data.prices;
Также вы хотели быif(SelectedCurrencyPair.length > 0) {
вместо этого проверить, потому что пустой массив является истинным значением в JavaScript. Это только начало. Потребуется больше информации для полного решения (можете ли вы создать функционирующий code pen с аналогичными фиктивными данными)?5. Позвольте мне добавить код режима для контекста