我在 javascript 中有一个多数组对象
[["A","F","A","H","F","F"],["F","A","A","F","F","H"]]
我想使用某种排序算法获得以下内容
[["A","A","A","H","A","F"],["F","F","F","F","F","H"]]
不在“A”和“F”中的字母应该留在它们数组的相同位置。只有“A”和“F”应该排序。
最佳答案
您可以展平数组,对其进行排序,使每个 A 都排在 F 之前,然后再次将其切片以匹配原始数据的结构。
var data = [["A","F","A","H","F","F"],["F","A","A","F","F","H"]]
function custom_sort(data) {
var sort = [].concat(...data.slice()), r = []
sort.forEach(function(e, i) {
if (e == 'A') {
var fi = sort.indexOf('F')
if (fi < i)(sort[fi] = 'A', sort[i] = 'F')
}
})
data.forEach(e => r.push(sort.splice(0, e.length)))
return r
}
console.log(JSON.stringify(custom_sort(data)))
console.log(JSON.stringify(custom_sort( [["F","F","A","H","F"],["F", "Z", "I", "A","A","A","F","H", "A"]])))
关于javascript - 在javascript中对多维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42133789/