●やりたいこと
以下のarr配列[カテゴリ1、カテゴリ2、カテゴリ3、数値、日付]を
1.カテゴリ1>カテゴリ2>カテゴリ3と昇順になるように、かつ日付を降順で並び替え
2.下記(完成予定)の様にカテゴリ1、カテゴリ2、カテゴリ3が重複しない、かつ日付が最新の行をarr2配列として抽出したい
(完成予定)
["a","a","a",1,"2019/02/02"]
["a","a","c",1,"2019/01/01"]
["a","b","a",1,"2019/01/01"]
["b","a","a",1,"2019/01/01"]
["b","a","b",1,"2019/01/01"]
["b","b","a",1,"2019/01/01"]
["b","b","b",1,"2019/01/01"]
["c","a","c",1,"2019/07/01"]
●質問内容
上記1やりたいこと1は思うように並び替え出来た様ですが、やりたいこと2の抽出がfilterで抽出すると思うのですが、どの様に条件付ければ良いか分かりません。
ご教示お願いします。
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width" /> </head> <body> <div id="test"></div> <script> //arr配列[カテゴリ1、カテゴリ2、カテゴリ3、数値、日付] var arr = [ ["a","a","a",1,"2019/01/01"], ["a","b","a",1,"2019/01/01"], ["b","a","a",1,"2019/01/01"], ["a","a","c",1,"2019/01/01"], ["c","a","c",1,"2019/01/01"], ["b","b","b",1,"2019/01/01"], ["b","b","a",1,"2019/01/01"], ["c","a","c",1,"2019/07/01"], ["b","a","b",1,"2019/01/01"], ["a","a","a",1,"2019/02/02"] ]; //並び替え arr.sort(function(a, b) { if(a[0] > b[0]){return 1;} else if(a[0] < b[0]){return -1;} else if(a[1] > b[1]){return 1;} else if(a[1] < b[1]){return -1;} else if(a[2] > b[2]){return 1;} else if(a[2] < b[2]){return -1;} else if(a[4] > b[4]){return -1;} else if(a[4] < b[4]){return 1;} else{return 0;} }); //ここからどの様にしたら良いのでしょうか? var arr2 = arr.filter(function (x, i, self) {return self.indexOf(x) === i;}); console.log(arr2); for (var i = 0; i < arr2.length; i++) { test.innerHTML += arr[i] + "<br>"; } </script> </body> </html>
回答3件
あなたの回答
tips
プレビュー