前提・実現したいこと
配列の氏名と日付の出力をしたいのですが、名前、日付が登録されている連想配列(これは連想配列で会ってますか?)を出力する際に名前がかぶっていた場合に一番新しい日付の配列のみを表示したいと考えています(少し文章がおかしいかもしれないですがすみません)。
HTMLでこのように表示したいです。
配列↓
array(7)[
0: {name: "田中", date: "2020-08-27"}
1: {name: "田中", date: "2020-08-07"}
2: {name: "坂下", date: "2020-08-19"}
3: {name: "坂下", date: "2020-07-30"}
4: {name: "吉田", date: "2020-07-31"}
5: {name: "山田", date: "2020-07-29"}
6: {name: "山本", date: "2020-07-29"}
]
列1 | 列2 |
---|---|
田中 | 2020-08-27 |
田中 | 2020-08-07 |
坂下 | 2020-08-19 |
坂下 | 2020-07-30 |
吉田 | 2020-07-31 |
山田 | 2020-07-29 |
山本 | 2020-07-29 |
↓
列1 | 列2 |
---|---|
田中 | 2020-08-27 |
坂下 | 2020-08-19 |
吉田 | 2020-07-31 |
山田 | 2020-07-29 |
山本 | 2020-07-29 |
該当のソースコード
JavaScript
1 for (i = 0; i < array.length; i++) { 2 if (array[i] != array[i+1]) { 3 document.getElementById(x).value = array[i]["name"]; 4 document.getElementById(x).textContent = "【" + array[i]["name"] + "】 最終更新日【" + array[i]["date"] + "】"; 5 x+=1; 6 } else { 7 if (array[i]["name"] == array[i+1]["name"]) { 8 document.getElementById(i).textContent = "【" + array[i]["name"] + "】 最終更新日【" + array[i]["date"] + "】"; 9 } else { 10 date = array[i]["date"]; 11 while (0) { 12 x = i - 1; 13 if (array[i]["name"] == array[x]["name"]) { 14 var date1 = Date.parse(array[i]["date"]); 15 var date2 = Date.parse(array[x]["date"]); 16 if (date2 < date1) { 17 date = date1 18 } 19 } else { 20 document.getElementById(i).value = array[i]["name"]; 21 document.getElementById(i).textContent = "【" + array[i]["name"] + "】 最終更新日【" + date + "】"; 22 break; 23 } 24 i++ 25 26 } 27 } 28 } 29 }
試したこと
配列のループとIDへの挿入ループの考え方が分からず頭がパンクしてしまいどうやって書けばいいのかわからなくなってしまいました。
多次元の配列をあまり扱ったことがなくボロボロのコードだとは思いますが修正、一気に変えても構いません、ご指摘お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 01:35