Использование условного оператора для массива

#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. Позвольте мне добавить код режима для контекста