[英]How to convert ES6 JSON object to dictionary?
如果我問一個已經重復的問題(沒有找到類似的問題),我真的很不熟悉ES6和JQuery,這很抱歉
我目前正在嘗試從JSON文件中獲取數據,如下所示
{
EUR: { code: "EUR", symbol: "€", rate: "5,278.0518", … }
GBP: { code: "GBP", symbol: "£", rate: "4,640.1577", … }
USD: { code: "USD", symbol: "$", rate: "6,152.3500", … }
}
這是我到目前為止的代碼:
class App extends Component {
constructor(props){
super(props)
this.state = {}
this.performSearch()
}
performSearch(){
const urlString = "https://api.coindesk.com/v1/bpi/currentprice.json";
$.ajax({
dataType: 'json',
url: urlString,
success: data => {
console.log("This is in my data", data["bpi"])
}
})
}
render() {
return (
<div className="App">
<p>This is a testing p</p>
</div>
);
}
}
我想遍歷data [“ bpi”],以便遍歷字典中的所有鍵和值。
但是,由於data [“ bpi”]的dataType是未定義的,因此無法在此處使用forEach()方法。
那么,如何在不必對所有內容進行硬編碼的情況下進行處理呢? (即,當我執行console.log(data [“ bpi”] [“ EUR”])時,它可以工作)
謝謝你的幫助
您可以使用Object.keys
將json對象轉換為數組,然后對其進行迭代。
Object.keys(data["bpi"]).map(key => data["bpi"][key]).forEach(item => console.log(item))
這里有幾件事。
data["bpi"]
或data.bpi
不應未定義。 在這種情況下,它應該是具有3個鍵的對象。
檢查數據如何返回。 如果它以JSON形式返回,則可以調用JSON.parse(data)
將數據從JSON對象解析為JavaScript對象,然后可以循環遍歷。
接下來,要遍歷對象中的鍵data.bpi
您不能使用.forEach
因為這是一個Array方法。 但是,您可以使用for.. in
循環。
正如其他人所述,您還可以使用Object.keys
將對象轉換為其對象的數組,然后在該對象上運行forEach
。
const parsedData = JSON.parse(data)
for(var key in parsedData.bpi) {
// do something here...
}
Object.keys(parsedData.bpi).forEach(key => parsedData.bpi[key] /* do something */ )
要遍歷對象,可以按以下步驟進行:
for(var keys in obj){
var value = obj[key]
.....
}
所以
var keys = Object.keys(obj)
for(var i =0; i<keys.length; i++){
var value = obj[keys[i]]
....
}
您的obj在這里是data.bpi或data [“ bpi”]
我看到這里有很多人使用以下方法遍歷您的Object
:
for (let i in data.bpi) {
// Your code
}
但是, 不應該使用這個方法,因為它也將遍歷你的對象的所有枚舉的屬性。
因此,這里有更好的使用方法:
let keys = Object.keys(data.bpi)
for (let i = 0; i < keys.length; i++) {
let item = data.bpi[i]
}
要么
let keys = Object.keys(data.bpi)
keys.forEach(e => {
let item = data.bpi[e]
})
或者您可以for...of
:
for (let i of data.bpi) {
let item = i
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.