首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JavaScript对逗号分隔字符串数组进行排序

使用JavaScript对逗号分隔字符串数组进行排序
EN

Stack Overflow用户
提问于 2018-07-14 23:14:55
回答 3查看 1.9K关注 0票数 1

我遇到了一个奇怪的需求,我正在努力完成它的最后几个小时。下面是我的字符串数组(只是一个例子,实际的数组包含大约2500条记录):

代码语言:javascript
复制
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个项目)。即:

代码语言:javascript
复制
testArray[0] = "130,839.9,855,837.3,848.65,3980489"

我的问题是,我想根据每个元素的第一项对testArray进行排序,并将其转换为具有所有值的数组的数组,因此输出将是:

代码语言:javascript
复制
[
  [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,然后进行排序,但没有成功。

有人能帮我解决这个问题吗?如果我说得不清楚,请告诉我。

EN

回答 3

Stack Overflow用户

发布于 2018-07-14 23:23:07

首先,使用Array.map()parseFloat()将每个字符串转换为浮点值的数组。之后,您可以简单地使用Arrays.sort()对数组的数组进行排序

尝试以下操作:

代码语言:javascript
复制
var arr = ["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 result = arr.map((a)=> a.split(",").map((b)=>parseFloat(b))).sort((a,b)=> a[0] -b[0]);
console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2018-07-14 23:23:41

只需将拆分的和映射到数字格式化的值,并按第一项排序。

代码语言:javascript
复制
var data = ["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"],
    result = data
        .map(s => s.split(',').map(Number))
        .sort((a, b) => a[0] - b[0]);
        
console.log(result);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN

Stack Overflow用户

发布于 2018-07-14 23:27:16

代码语言:javascript
复制
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"];

const output = [];
for (let i = 0; i < testArray.length; i++) {
    var numbers = testArray[i].split(',');
    for (let j = 0; j < numbers.length; j++) {
        numbers[j] = +numbers[j];
    }
    output[i] = numbers;
}
output.sort(function(x, y) {
    return x[0] - y[0];
});

或更短

代码语言:javascript
复制
output = testArray.map(s => s.split(',')).map(e => e.map(n => +n)).sort((x, y) => x[0] - y[0]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51340736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档