Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript对逗号分隔字符串数组进行排序_Javascript_Arrays_Sorting_Split_Array Map - Fatal编程技术网

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

使用JavaScript对逗号分隔字符串数组进行排序,javascript,arrays,sorting,split,array-map,Javascript,Arrays,Sorting,Split,Array Map,我遇到了一个奇怪的要求,我在最后几个小时努力完成它。下面是我的字符串数组只是一个示例,实际数组包含大约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个元素,每个元素用逗号分隔,每个元素有6个项目。i、 e: testArray[0]

我遇到了一个奇怪的要求,我在最后几个小时努力完成它。下面是我的字符串数组只是一个示例,实际数组包含大约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个元素,每个元素用逗号分隔,每个元素有6个项目。i、 e:

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]
]
我可以对单个项目进行排序,但不能将整个数组作为一个整体进行排序,而且我尝试过使用“拆分”然后进行排序,但运气不佳

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

在中使用转换数组,然后根据[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.mapfunction项{ 返回项.split','.mapfunction num{ 返回parseFloatnum; }; } console.logconverted var sorted=converted.sort函数a,b{返回a[0]-b[0]} console.logsorted在内部使用转换数组,然后根据[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.mapfunction项{ 返回项.split','.mapfunction num{ 返回parseFloatnum; }; } console.logconverted var sorted=converted.sort函数a,b{返回a[0]-b[0]}
logsorted首先使用array.map和parseFloat将每个字符串转换为浮点值数组。 之后,您只需使用arrays.sort对数组进行排序

请尝试以下操作:

var-arr=[130839.9855837.3848.653980489129875875828.1833.256926078138891.3893.3865.2868.755035618]; var result=arr.mapa=>a.split.mapb=>parseFloatb.sorta,b=>a[0]-b[0];
console.logresult 首先,使用array.map和parseFloat将每个字符串转换为浮点值数组。 之后,您只需使用arrays.sort对数组进行排序

请尝试以下操作:

var-arr=[130839.9855837.3848.653980489129875875828.1833.256926078138891.3893.3865.2868.755035618]; var result=arr.mapa=>a.split.mapb=>parseFloatb.sorta,b=>a[0]-b[0];
console.logresult 只需将拆分后的值映射到数字格式的值,并按第一项排序即可

var数据=[130839.9855837.3848.653980489129875875828.1833.25692607813891.3893.3865.2868.755035618], 结果=数据 .maps=>s.split','.mapNumber .sorta,b=>a[0]-b[0]; console.logresult;
.as console wrapper{max height:100%!important;top:0;}只需将拆分的值映射到数字格式的值,并按第一项排序即可

var数据=[130839.9855837.3848.653980489129875875828.1833.25692607813891.3893.3865.2868.755035618], 结果=数据 .maps=>s.split','.mapNumber .sorta,b=>a[0]-b[0]; console.logresult;
.作为控制台包装器{max height:100%!important;top:0;}最好也显示尝试。最好也显示尝试。您将浮点数排序为字符串。@ASDFGerte感谢您指出这一点,我在编辑问题时输入了错别字。顺便说一句,在编辑之前,您的排序甚至首先将子数组强制为字符串,然后将其排序为字符串,这有点太苛刻了。您将浮点数排序为字符串。@AsdGerte感谢您指出这一点,我在编辑问题时输入了错别字。顺便说一句,在编辑之前,您的排序甚至首先将子数组强制为字符串,然后将其排序为字符串,这太苛刻了。ES5代码中有一个输入错误:return item.split'.'应该是return item.split'.'。ES5代码中有一个输入错误:return item.split'.'应该是return item.split'.'。
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];
});
output = testArray.map(s => s.split(',')).map(e => e.map(n => +n)).sort((x, y) => x[0] - y[0]);