私は日付を含む単純なオブジェクトのリストを持っており、それらを日付でグループ化する必要があります。 残念ながら、それは動作していないようです。私は同じことを行うが、別の列を使用している場合は、それが正しく動作していますJavascript:配列キーが日付として使用されない
games = [
{date:"3/5/17", name:"game 1, 3"},
{date:"3/5/17", name:"game 2, 3"},
{date:"4/5/17", name:"game 3, 4"},
{date:"4/5/17", name:"game 4, 4"},
{date:"4/5/17", name:"game 5, 4"},
{date:"5/5/17", name:"game 6, 5"},
{date:"5/5/17", name:"game 7, 5"},
]
let games_by_date = []
games.map((i)=>{
if(!games_by_date[i['date']])
games_by_date[i['date']]=[];
games_by_date[i['date']].push(i);
})
console.log(games_by_date) // shows [3/5/17: Array[2], 4/5/17: Array[3], 5/5/17: Array[2]], but shows it as Array[0]
console.log(games_by_date[0]) // undefined
console.log(games_by_date[1]) // undefined
games_by_date.map((g)=>console.log(g)) // doesn't even gets there
:ここ
は、コード簡略化されています。
games = [
\t {date:"3/5/17", day:"3", name:"game 1, 3"},
\t {date:"3/5/17", day:"3", name:"game 2, 3"},
\t {date:"4/5/17", day:"4", name:"game 3, 4"},
\t {date:"4/5/17", day:"4", name:"game 4, 4"},
\t {date:"4/5/17", day:"4", name:"game 5, 4"},
\t {date:"5/5/17", day:"5", name:"game 6, 5"},
\t {date:"5/5/17", day:"5", name:"game 7, 5"},
]
let games_by_date = []
games.map((i)=>{
\t if(!games_by_date[i['date']])
\t games_by_date[i['date']]=[];
games_by_date[i['date']].push(i);
})
console.log(games_by_date)
console.log(games_by_date[0])
console.log(games_by_date[1])
games_by_date.map((g, d)=>console.log(d, g))
console.log("--------------------")
let games_by_day = []
games.map((i)=>{
\t if(!games_by_day[i['day']])
\t games_by_day[i['day']]=[];
games_by_day[i['day']].push(i);
})
console.log(games_by_day)
console.log(games_by_day[0])
console.log(games_by_day[1])
games_by_day.map((g, d)=>console.log(d, g))
だから、理由は私が使用しているキーのタイプで起こるようです。
あなたはそれに遭遇しましたが、どのように解決しましたか?あなただけのキーによってグループに減らす使用することができます おかげ
彼は 'games_by_date'を配列ではなくオブジェクトに変更しなければならず、これは確かな答えです。 (わかりやすくするために、 'res'を' games_by_date'に改名することもできます) –
@LiamGrayについては、あなたの答えを指摘して答えにリンクしてください。 – baao
お返事ありがとうございました、 '.reduce'の+1はOPのやりたいことのクリーンなコードスタイルですから! –