javascript - 使用 JavaScript 对逗号分隔的字符串数组进行排序
问题描述
我遇到了一个奇怪的要求,我在最后几个小时里都在努力完成它。下面是我的字符串数组(只是一个例子,实际数组包含大约 2500 条记录):
var testArray = [
"130,839.9,855,837.3,848.65,3980489",
"129,875,875,828.1,833.25,6926078",
"138,891.3,893.3,865.2,868.75,5035618"
]
我们这里有 3 个元素,其中每个元素都是comma
分开的(每个元素有 6 个项目)。IE:
testArray[0] = "130,839.9,855,837.3,848.65,3980489"
我的问题是,我想testArray
根据每个元素的第一项进行排序,并将其转换为具有所有值的数组数组,因此输出将是:
[
[129, 875, 875, 828.1, 833.25, 6926078],
[130, 839.9, 855, 837.3, 848.65, 3980489],
[138, 891.3, 893.3, 865.2, 868.75, 5035618]
]
我能够对单个项目进行排序,但不能对整个数组进行排序,并且我尝试使用 split 然后排序但没有运气。
有人可以帮我解决这个问题,如果我不清楚,请告诉我。
解决方案
使用 in 转换数组Array#map
,Array#map
然后Array#sort
根据[0]
索引 ( a[0] - b[0]
) 在转换后的数组上使用:
在 ES5 中
var testArray = [
"130,839.9,855,837.3,848.65,3980489",
"129,875,875,828.1,833.25,6926078",
"138,891.3,893.3,865.2,868.75,5035618"
]
var converted = testArray.map(function (item) {
return item.split(',').map(function (num) {
return parseFloat(num);
});
})
console.log(converted)
var sorted = converted.sort(function (a, b) { return a[0] - b[0] })
console.log(sorted)
在 ES6 中
const testArray = [
"130,839.9,855,837.3,848.65,3980489",
"129,875,875,828.1,833.25,6926078",
"138,891.3,893.3,865.2,868.75,5035618"
]
const converted = testArray.map(
item => item.split(',').map(
num => parseFloat(num)
)
)
console.log(converted)
const sorted = converted.sort((a, b) => a[0] - b[0])
console.log(sorted)
在 ES6 中(精简版)
const testArray = [
"130,839.9,855,837.3,848.65,3980489",
"129,875,875,828.1,833.25,6926078",
"138,891.3,893.3,865.2,868.75,5035618"
]
const convertedAndSorted = testArray
.map(n => n.split(',')
.map(num => parseFloat(num)))
.sort((a, b) => a[0] - b[0])
console.log(convertedAndSorted)
推荐阅读
- java - 将命名空间添加到 java 类根元素中的问题
- javascript - 用 JS 播放声音
- python - 这是什么意思 - ValueError: No axis named -1 for object type DataFrame
- coldfusion - 太妃糖使用customserializer
- ruby - 使用.key在ruby中检索哈希键?方法
- html - 为什么我的电子邮件显示在 Gmail 中,但不显示在 Outlook 中?
- r - 在 R 中为日期制作表格时,如何填写缺失的日期以显示为频率为 0?
- php - 让 PHP 函数默认使用全局变量?
- kotlin - 将映射字符串键和值更改为 int 键和值
- typescript - TS2339:类型“{}”上不存在属性“下一个”