【问题标题】:Sort array in weird way [duplicate]以奇怪的方式对数组进行排序[重复]
【发布时间】:2019-08-31 09:12:17
【问题描述】:

假设我有一个这样的数组:

let array = ["eid_x", "eid_x", "cid_x", "cid_x"]

我将如何对其进行排序,使其成为这样?

let array = ["cid_x", "eid_x", "cid_x", "eid_x"]

原始数组是随机排列的,例如:eid, cid, cid, eid

有谁知道如何在第二个数组中排序?

【问题讨论】:

  • sort() 应该在什么基础上发生?
  • 排序的逻辑是什么,如何定义什么是第一、第二等等?
  • 将它们分成两个数组,然后从其他数组复制到第三个数组
  • @varun agarwal 不确定我是否理解,但如果你的意思是我认为你的意思它总是随机化,它可能是eid, eid, cid, cid。或eid, cid, cid, eid。或任何其他组合。但我需要它像cid, eid, cid, eid 等这样结束
  • 从技术上讲,这根本不是排序:p

标签: javascript arrays node.js sorting


【解决方案1】:

将项目拆分为两个数组,然后在循环中的两个数组(或本例中的 Array#map)之间交替抓取一个项目。

let array = ["eid_x", "eid_x", "cid_x", "cid_x"]

let eid = array.filter(i => i == 'eid_x')
let cid = array.filter(i => i == 'cid_x')

let result = new Array(array.length).fill(null)
  .map((i, idx) => idx % 2 == 0 ? cid.shift() : eid.shift())

console.log(result)

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2022-01-18
    相关资源
    最近更新 更多