2016-09-25 48 views
0
var data = { 
    2016-09-24: { 
    0: {amount: 200, id: 2}, 
    1: {...} 
    }, 
    2016-09-25: { 
    0: {amount: 500, id: 8}, 
    1: {...} 
    } 
} 

我要代表在像鑑於上述數據:遍歷JavaScript對象,但保持與關鍵價值

「**」將是一個card類股利:

***************************************** 
* <h2>2016-09-24</h2>     * 
*          * 
* <li>amount: 200</li>     * 
* <li>amount: 40</li>     * 
*          * 
***************************************** 

***************************************** 
* <h2>2016-09-25</h2>     * 
*          * 
* <li>amount: 500</li>     * 
* <li>amount: 90</li>     * 
*          * 
***************************************** 

我還沒有達到佈局,但卡在循環。即時通訊使用的陣營ES6:

dailySales(){ 
    Object.keys(data).forEach(function(key) { 
    var dates = key; 
    var val = data[key]; 

    let sales = val.map(function(s, i) { 
     //console.log(s.amount); 
    }); 
    }); 
} 

以上註釋掉console.log將返回所有amount。如何用日期(鍵)分割每個值?這個問題類似於to this one

回答

2

在萊昂納多的「盜夢空間」明智的話,「我們需要更進一步」

你是超級密切,在正確的軌道上。您需要循環嵌套對象再次,你會得到你在找什麼:在陣列中的每個子:

Object.keys(data).map(function(date, i) { 

    // here you have the date 
    return (
     <div key={ i }> 
      <h1>{ date }</h1> 
      { Object.keys(data[ date ]).map(function(item, j) { 
       // and here you have the item by its key 
       var rowItem = data[date][item]; 
       return (
        <p key={ rowItem.id }>Amount: { rowItem.amount }</p> 
       ); 
      })} 
     </div> 
    ); 

}); 

https://jsfiddle.net/64s0yvvz/1/

+0

反應是抱怨和金額沒有顯示:'警告或迭代器應該有一個獨特的「鑰匙」道具 – Sylar

+0

@Sylar你看着我發佈的小提琴嗎?它按預期工作。 – imjared

+0

好的。是的,我看到了你的錯字!當它應該是'{rowItem.amount}'時,你有'{item.amount}'。 – Sylar