亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 API 獲取數據并將字符串轉換為數字

從 API 獲取數據并將字符串轉換為數字

小怪獸愛吃肉 2022-12-22 13:09:08
我有兩個問題。首先,當從 API 獲取數據時,我只在我設置的時間間隔后才獲取數據。但是,我需要立即接聽第一個電話。其次,當我將接收到的數據轉換為數字時,我丟失了部分數字,例如收到 11,518.6217 而我只得到 11。有人能幫幫我嗎?    class Currencies extends Component {      state = {        inputField: 0,        exRates: 0,      };      componentDidMount() {        try {          setInterval(async () => {            const res = await fetch(              "https://api.coindesk.com/v1/bpi/currentprice.json"            );            const exRates = await res.json();            console.log(exRates.bpi);            this.setState({ exRates: exRates.bpi });          }, 6000);        } catch (err) {          console.log(err);        }      }      BTCChangeHandler = (event) => {        this.setState({ inputField: event.target.value });      };      render() {        const exRates = this.state.exRates;        const currData = Object.values(exRates).map((value) => value.rate);        const rates = currData.map(parseFloat);        console.log(rates);        return (          <div>            <input              type="number"              placeholder="Enter BTC value"              onChange={this.BTCChangeHandler}            />            <Currency name="USD" value={this.state.inputField * rates[0]} />            <Currency name="GPB" value={this.state.inputField * rates[1]} />            <Currency name="EUR" value={this.state.inputField * rates[2]} />          </div>        );      }    }    export default Currencies;
查看完整描述

3 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

這是一個區域設置問題。Api 提供的值有一個,表示千位和一個.表示小數。您的客戶可能使用相反的方式。首先,您必須將字符串轉換為您的客戶語言環境,然后您可以將其解析為數字。

您可以使用本文中提到的庫?;蛘吣梢詣摻ㄗ约旱暮瘮祦砬袚Q符號。


查看完整回答
反對 回復 2022-12-22
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

您可以嘗試setTimOut而不是setInterval然后返回一個在 api rest 中獲取數據的承諾



查看完整回答
反對 回復 2022-12-22
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

我正在使用 setInterval,但在第一次調用時我需要立即調用它


您應該手動調用它,以及在setInterval.


let dofetch = async () => {

  const res = await fetch(

    "https://api.coindesk.com/v1/bpi/currentprice.json"

  );

  const exRates = await res.json();

  console.log(exRates.bpi);

  this.setState({ exRates: exRates.bpi });

}

setInterval(dofetch, 6000);

dofetch()

我丟失了部分數字,例如收到 11,518.6217 我只得到 11


您的字符串數字格式為,,您應該在將它們傳遞給parseFloat函數之前將其刪除。


parseFloat('11,518.6217') // 11

parseFloat('11,518.6217'.split(',').join('')) // 11.518.6217

所以改變:


currData.map(parseFloat);

到:


currData.map(s => parseFloat(s.split(',').join('')));


查看完整回答
反對 回復 2022-12-22
  • 3 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號