gpt4 book ai didi

javascript - Nodejs : sorting paragraph numbers

转载 作者:行者123 更新时间:2023-12-03 06:26:16 25 4
gpt4 key购买 nike

我正在尝试对从文档中提取的一些段落编号进行排序。

不幸的是,它们不是真正的小数,因此标准sort函数不起作用。例如,我想要以下结果: ["3.1","3.2","3.11"] NOT ["3.1","3.11","3.2"] (这是我从使用中得到的: http://www.w3schools.com/jsref/jsref_sort.asp )。

这些数字也有不确定的小数位数。例如,它们可以显示如下:["1.i.a","1.i.b","1.i.c.A","1.i.c.B"]

在解决这个问题一段时间后,我相信最好的解决方案是将每个数字视为用“.”分隔的子字符串,并根据“最低”子字符串对它们进行比较/排序。

有人可以建议如何在 JS 中完成此操作吗?

非常感谢任何帮助

最佳答案

这对你有用吗?如果需要的话我可以提供更多解释。

"use strict"
let index = ['3.1.a', '3.2', '3.11', '3.1.c', '3.2.z'];

index.sort((a, b) => {
var aArr = a.split('.'), bArr = b.split('.')

for (var i = 0, aLength = aArr.length; i < aLength; i++) {
let aVal = aArr[i], bVal = bArr[i]
if (!isNaN(aVal)) aVal = Number(aVal) // convert substring into Number if it is a Number
if (!isNaN(bVal)) bVal = Number(bVal)

if (bVal === undefined) return 1 // b lower index
if (aVal === bVal) continue

return typeof(aVal) === "string" ? aVal.charCodeAt() - bVal.charCodeAt() : aVal - bVal; // for strings, works only if length == 1
}

return bArr[i] === undefined ? 0 : -1 // if b undefined, then both numbers are equal, otherwise a is shorter
})

console.log(index)
// outputs [ '3.1.a', '3.1.c', '3.2', '3.2.z', '3.11' ]

关于javascript - Nodejs : sorting paragraph numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com