我正在尝试使用两个排序层对一些项目进行排序。例如,我有一个带有列的列表。一列是类型,一列是年份。现在我想按类型对项目进行排序,并且所有具有相同类型的项目也必须按年份排序。
我的做法是获取所有项目的数组并对类型进行排序。 然后,我取出已排序的数组并将每个具有相同类型的项目推入一个数组中(这是一个二维数组),所以我将它们作为单独的数组。 然后,我想对2D数组中每个数组的年份进行排序。
这是我的代码:
我的做法是获取所有项目的数组并对类型进行排序。 然后,我取出已排序的数组并将每个具有相同类型的项目推入一个数组中(这是一个二维数组),所以我将它们作为单独的数组。 然后,我想对2D数组中每个数组的年份进行排序。
这是我的代码:
function sortDivs(type, reverse) {
let sortedList = items.map((e) => ({ // Map each item to a object with its element and its child element's text
e, // element
text: e.querySelector('.wrap.toggler .'+type).textContent, // the text to be compared
year: e.querySelector('.wrap.toggler .'+'jahr').textContent.replace(' ', '').replace('-', '') // The year to compare
})).sort(({text:a},{text:b}) =>
reverse ? b.localeCompare(a) : a.localeCompare(b)
)
// if type 'year' no need to sort second layer
if(type == 'jahr') return
// Sort each duplicate type of clicked tab per year , newest top
let currentText = sortedList[0].text
let tmpArray = []
let array2D = []
// Push same items in seperate arrays of array2D
sortedList.forEach((item, i) => {
if(item.text != currentText) {
array2D.push(tmpArray)
tmpArray = []
currentText = item.text
}
if(item.text == currentText) {
tmpArray.push(item)
}
if(i == sortedList.length - 1) {
array2D.push(tmpArray)
}
})
console.log('Seperated Arrays ', array2D)
// Everything works till here... The arrays dont get sorted
// Sort each array of array2D
tmpArray = []
array2D.forEach(array => {
array.sort(({year:a}, {year:b}) => {
b.localeCompare(a)
})
})
console.log('seperate sorted arrays ',array2D)
array2D.forEach(e => {
console.log('final', e)
})
}
我将所有排序类型存储在单独的数组中,这样做是有效的。但是,在循环遍历2D数组并对每个数组进行排序时,却无法生效。我得到的是未排序的数组...需要将2019放在第一位。
数组结构在屏幕截图中显示,或者在此处字符串化:`
[
[
{"e":{"jQuery111307164768320580499":8},"text":"Fertiggestellt ","year":"2018"},
{"e":{"jQuery111307164768320580499":9},"text":"Fertiggestellt ","year":"2017"},
{"e":{"jQuery111307164768320580499":21},"text":"Fertiggestellt ","year":"2013"},
{"e":{"jQuery111307164768320580499":25},"text":"Fertiggestellt ","year":"2019"},
{"e":{"jQuery111307164768320580499":27},"text":"Fertiggestellt ","year":"2017"},
{"e":{"jQuery111307164768320580499":28},"text":"Fertiggestellt ","year":"2017"},
{"e":{"jQuery111307164768320580499":29},"text":"Fertiggestellt ","year":"2017"},
{"e":{"jQuery111307164768320580499":30},"text":"Fertiggestellt ","year":"2014"},
{"e":{"jQuery111307164768320580499":31},"text":"Fertiggestellt ","year":"2014"},
{"e":{"jQuery111307164768320580499":32},"text":"Fertiggestellt ","year":"2013"},
{"e":{"jQuery111307164768320580499":33},"text":"Fertiggestellt ","year":"2013"},
{"e":{"jQuery111307164768320580499":34},"text":"Fertiggestellt ","year":"2013"},
{"e":{"jQuery111307164768320580499":35},"text":"Fertiggestellt ","year":"2012"},
{"e":{"jQuery111307164768320580499":36},"text":"Fertiggestellt ","year":"2012"},
{"e":{"jQuery111307164768320580499":37},"text":"Fertiggestellt ","year":"2009"},
{"e":{"jQuery111307164768320580499":38},"text":"Fertiggestellt ","year":"2006"},{"e":{"jQuery111307164768320580499":39},"text":"Fertiggestellt ","year":"2005"},
{"e":{"jQuery111307164768320580499":40},"text":"Fertiggestellt ","year":"2005"},
{"e":{"jQuery111307164768320580499":41},"text":"Fertiggestellt ","year":"2001"},
{"e":{"jQuery111307164768320580499":42},"text":"Fertiggestellt ","year":"2009"}
]
,
[
{"e":{"jQuery111307164768320580499":6},"text":"im Bau ","year":"2017"},{"e":{"jQuery111307164768320580499":7},"text":"im Bau ","year":"2017"},{"e":{"jQuery111307164768320580499":26},"text":"im Bau ","year":"2011"}
],
[
{"e":{"jQuery111307164768320580499":4},"text":"in Planung ","year":"2018"},
{"e":{"jQuery111307164768320580499":5},"text":"in Planung ","year":"2018"},
{"e":{"jQuery111307164768320580499":10},"text":"in Planung ","year":"2017"}
],
[
{"e":{"jQuery111307164768320580499":20},"text":"Machbarkeitsstudie ","year":"2016"}
],
[
{"e":{"jQuery111307164768320580499":11},"text":"Wettbewerb ","year":"2019"},
{"e":{"jQuery111307164768320580499":12},"text":"Wettbewerb ","year":"2018"},
{"e":{"jQuery111307164768320580499":13},"text":"Wettbewerb ","year":"2018"},
{"e":{"jQuery111307164768320580499":14},"text":"Wettbewerb ","year":"2016"},
{"e":{"jQuery111307164768320580499":15},"text":"Wettbewerb ","year":"2017"},
{"e":{"jQuery111307164768320580499":16},"text":"Wettbewerb ","year":"2015"},
{"e":{"jQuery111307164768320580499":17},"text":"Wettbewerb ","year":"2018"},
{"e":{"jQuery111307164768320580499":18},"text":"Wettbewerb ","year":"2017"},
{"e":{"jQuery111307164768320580499":19},"text":"Wettbewerb ","year":"2016"},
{"e":{"jQuery111307164768320580499":22},"text":"Wettbewerb ","year":"2015"},
{"e":{"jQuery111307164768320580499":23},"text":"Wettbewerb ","year":"2015"},
{"e":{"jQuery111307164768320580499":24},"text":"Wettbewerb ","year":"2015"}
]
]
`