javascript - 在javascript中对多维数组进行排序

标签 javascript algorithm sorting

我在 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/

相关文章:

javascript - 使用 neo4j-driver 获取 neo4j 中所有连接的 Node

Javascript for 循环不按顺序运行

javascript - React Router v4 中的多个页面

algorithm - 一种用可变或不可变状态替换序列中事件的有效技术

python - 如何分配和管理优先级机制

perl - 如何在 Perl 中对 IP 地址列表进行排序?

javascript - Vue - 添加背景动画

c# - GSM 基站定位和三角测量算法(类似于 OpenCellID/Skyhook/Google 的 MyLocation)

java - 在 java 对象数组中执行按顺序(按字母顺序)添加

Range类的VBA排序方法失败