數據:循環中的對象?
我有有內部數組中的數據,我嘗試循環默認代碼:
<div className="loop-container">
{
joblist.map((itemb,index) => (
<div>
</div>
))
}
</div>
我想表明的名字,數組第一個,(這是日期),然後展示一下這個陣列由,但我得到的錯誤:
joblist.map is not a function
數據:循環中的對象?
我有有內部數組中的數據,我嘗試循環默認代碼:
<div className="loop-container">
{
joblist.map((itemb,index) => (
<div>
</div>
))
}
</div>
我想表明的名字,數組第一個,(這是日期),然後展示一下這個陣列由,但我得到的錯誤:
joblist.map is not a function
直接,我們不能使用map
,filter
關於對象,首先我們需要從那個對象獲得一個數組(屬性或屬性值),然後我們只能得到這個數組。
您得到的數據不是數組,因此我們直接不能使用Array.prototype.map。你需要做的是首先使用Object.keys來獲得數組中的所有密鑰。一旦你得到這個數組,使用map
就可以了,在map
函數體內使用另一個map
來迭代這些值。
您也可以使用Object.values或Object.entries,但模式將不會與Object.keys()相同。
寫這樣的:
<div className="loop-container">
{
Object.entries(joblist).map(([key, value]) => (
<div id={key}>
Date: {key}
{
value.map(el => <div key={el.id}> {el.created_time} </div>)
}
</div>
))
}
</div>
檢查這個片段使用Object.entries:
let obj = {
'key1': [{a:1}, {a:2}, {a:3}],
'key2': [{a:4}, {a:5}, {a:6}],
'key3': [{a:7}, {a:8}, {a:9}]
};
Object.entries(obj).map(([key, value]) => {
console.log('key name = ', key);
value.map(el => {
console.log(el.a);
})
})
檢查這個片段使用Object.keys:
let obj = {
'key1': [{a:1}, {a:2}, {a:3}],
'key2': [{a:4}, {a:5}, {a:6}],
'key3': [{a:7}, {a:8}, {a:9}]
};
Object.keys(obj).map(key => {
console.log('key name = ', key);
obj[key].map(el => {
console.log(el.a);
})
})
檢查這個片段使用Object.values:
let obj = {
'key1': [{a:1}, {a:2}, {a:3}],
'key2': [{a:4}, {a:5}, {a:6}],
'key3': [{a:7}, {a:8}, {a:9}]
};
Object.values(obj).map(value => {
console.log('value = ', JSON.stringify(value));
value.map(el => {
console.log(el.a);
})
})
id未定義,認爲需要add id –
對不起,應該是'key = {el.id}'而不是'{id}',更新了答案。 –
正如你看到的joblist
不是陣列,它是對象。如果你真的想使用map
那麼你可以使用new Map()
。 new Map()構造函數接受可迭代的條目。使用Object.entries
,您可以很容易地將Object轉換爲Map:
var mapjoblist = new Map(Object.entries(joblist));
<div className="loop-container">
{mapjoblist.map((itemb,index) => (
<div>
.......
</div>
))}
</div>
「joblist」是您在屏幕截圖中顯示的**對象**嗎? –
公平地說,控制檯有你的答案。你可以清楚地看到'joblist'是一個對象,其中的鍵是日期而不是數組。 – GillesC
所以@GillesC已經說過:它不是一個數組,它是一個對象。 –