#javascript #arrays #reactjs #react-native #multidimensional-array
#javascript #массивы #reactjs #react-native #многомерный массив
Вопрос:
Я извлекаю массив объектов с интервалом в одну секунду из внешнего API и сопоставляю массив объектов в react native. Этими отображенными объектами являются : CurrencyPair
, BuyingPrice
и sellingPrice
. Примером отображаемых объектов является
[
"USD_CHF",
"0.90512",
"0.90497",
]
который является одномерным массивом и представлен выше соответственно.
Во-вторых, пользователь должен выбрать валютную пару по своему выбору и ввести цену покупки и сообщение, так что, когда BuyingPrice
из selectedcurrencypair
(извлекается из API) равно BuyingPrice
из SelectedCurrencyPair
выбранного пользователем, срабатывает оповещение с сообщением с ним. Я поместил вводимые пользователем данные в виде многомерного массива и попытался выполнить цикл, проверяя, когда условие выполняется, но, похоже, оператор if в цикле не проверяется. Ниже приведен мой код:
// Mapping array of objects
const result = data.prices.map(value =>
[value.instrument, value.closeoutAsk, value.closeoutBid]
);
checkCondition(...result);
//function containing the comparison condition
function checkCondition({ BuyThreshold, SMSMessage }) {
// initialize your stack
const myStack=[];
// create a new row
const row = [];
const SelectedCurrencyPair =
currency.data.prices[clickedindex].instrument;
row.push(SelectedCurrencyPair);
row.push(BuyThreshold);
row.push(SMSMessage);
// insert the row
myStack.push(row);
for (let i = 0; i < myStack.length; i ) {
for (let j = 0; j < result.length; j ) {
if (result[j][0] === myStack[i][0]){
if (result[j][1] >= myStack[i][1]) {
Alert.alert(myStack[i][0],"Target Price has hit : " myStack[i][1]);
} else {
console.log("Price not reached");
}
} else{
console.log("Wrong currency pair");
}
}
}
}
checkCondition({ SelectedCurrencyPair, BuyThreshold, SMSMessage});
<Modal
visible={modalopen}
transparent={true}
animationType={"fade"}
>
<View style={{flex: 1, backgroundColor: '#000000aa'}}>
<View style={{margin: 10, backgroundColor: '#ffffff', padding: 30, flex: 1, borderRadius: 10}}>
<Text style={{textAlign: "center", fontWeight: "bold"}}>
Create Alert On:
</Text>
<Text style={{textAlign: "center", fontWeight: "bold"}}>
<>
{currency.data.prices[clickedindex].instrument}
</>
</Text>
<View style={{ flexDirection: "row", justifyContent:"center", marginTop: 20 }}>
<View style={styles.inputWrap}>
<TextInput
style={styles.textInputStyle}
autoCorrect={false}
value={ BuyThreshold}
onChangeText = {(BuyThreshold) => setBuyThreshhold(BuyThreshold)}
placeholder="BuyPrice"
placeholderTextColor="#60605e"
numeric
clearButtonMode='always'
keyboardType='decimal-pad'
/>
<TextInput
style={styles.messageStyle}
value={SMSMessage}
onChangeText = {(SMSMessage) => setSMSMessage(SMSMessage)}
placeholder="Message"
clearButtonMode='always'
placeholderTextColor="#60605e"
/>
</View>
</View>
<TouchableOpacity style={styles.button}
onPress={() => {
checkCondition({BuyThreshold, SMSMessage});
// navigation.navigate("MyAlerts");
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. нужна дополнительная информация. Я не знаю, почему вы вызываете
checkCondition({SelectedCurrencyPair,BuyThreshold, SMSMessage});
, например, в последней строке. Пожалуйста, укажите весь ваш код, который имеет значение (вместо того, чтобы заставлять нас делать предположения)2.
checkCondition(...result)
противоречит аргументам, сигнатураcheckCondition
которых ожидает один объект. Последняя строка последнего блока кода выполняет правильный вызов, но здесь свойства предоставляются «на ровном месте» .3. @PeterSeliger Как я могу получить доступ к результату в
checkCondition
функции4. @user23424 … пожалуйста, обратите внимание на то, как форматировать код каждый раз, когда вы редактируете любой из блоков кода. Заранее спасибо. Если код не может быть легко прочитан, количество людей, желающих оказать помощь, значительно падает.
5. @PeterSeliger Это была на самом деле проблема. Большое вам спасибо