Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 - Fatal编程技术网

使用存储为文本的数字对javascript数组进行排序

使用存储为文本的数字对javascript数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我正在尝试对我的数组进行排序。我试图按照每个方括号中的[2]条目对块进行排序。所以第15个应该在顶部,第8个应该是第二个,依此类推 我试过使用 var sorted = data.sort(function(a,b){return b[2]-a[2]}); console.log(sorted); 及 但这不起作用。是因为数字是以文本形式存储的吗?如果是这样的话,我已经试过了 data.sort(function(a,b){return parseFloat(b[2])-parseFloat(

我正在尝试对我的
数组进行排序。我试图按照每个方括号中的
[2]
条目对块进行排序。所以第15个应该在顶部,第8个应该是第二个,依此类推

我试过使用

var sorted = data.sort(function(a,b){return b[2]-a[2]});
console.log(sorted);

但这不起作用。是因为数字是以文本形式存储的吗?如果是这样的话,我已经试过了

data.sort(function(a,b){return parseFloat(b[2])-parseFloat(a[2])});
console.log(sorted);
这也没用

0:(2) ["HDR", "GENERATION BY FUEL TYPE CURRENT Last Updated At 20180719150500"]
1:(2) ["FTR", "14"]
2:(8) ["FUELINSTHHCUR", "OCGT", "0", "0.0", "0", "0.0", "0", "0.0"]
3:(8) ["FUELINSTHHCUR", "OIL", "0", "0.0", "0", "0.0", "0", "0.0"]
4:(8) ["FUELINSTHHCUR", "COAL", "947", "3.0", "900", "2.9", "15144", "2.2"]
5:(8) ["FUELINSTHHCUR", "NUCLEAR", "6407", "20.4", "6477", "20.8", "158268", "22.5"]
6:(8) ["FUELINSTHHCUR", "WIND", "1710", "5.4", "1678", "5.4", "11903", "1.7"]
7:(8) ["FUELINSTHHCUR", "PS", "165", "0.5", "174", "0.6", "6854", "1.0"]
8:(8) ["FUELINSTHHCUR", "CCGT", "17355", "55.2", "17144", "55.1", "382043", "54.3"]
9:(8) ["FUELINSTHHCUR", "OTHER", "59", "0.2", "59", "0.2", "1406", "0.2"]
10:(8) ["FUELINSTHHCUR", "INTFR", "1998", "6.4", "1998", "6.4", "47363", "6.7"]
11:(8) ["FUELINSTHHCUR", "INTIRL", "0", "0.0", "0", "0.0", "1960", "0.3"]
12:(8) ["FUELINSTHHCUR", "INTNED", "1001", "3.2", "1000", "3.2", "23097", "3.3"]
13:(8) ["FUELINSTHHCUR", "INTEW", "0", "0.0", "0", "0.0", "4803", "0.7"]
14:(8) ["FUELINSTHHCUR", "BIOMASS", "1649", "5.2", "1621", "5.2", "48031", "6.8"]
15:(7) ["TOTAL", "31448", "100.0", "31128", "100.0", "703547", "100.0"]
16:(8) ["FUELINSTHHCUR", "NPSHYD", "157", "0.5", "77", "0.2", "2675", "0.4"]

任何帮助都将不胜感激

这会帮你搞定的

var collator=new Intl.collator(未定义{
数字:对,
敏感度:“基本”
});
var myArray=['1_文档'、'11_文档'、'2_文档'];

log(myArray.sort(collator.compare))这将完成您的任务

var collator=new Intl.collator(未定义{
数字:对,
敏感度:“基本”
});
var myArray=['1_文档'、'11_文档'、'2_文档'];

log(myArray.sort(collator.compare))
您可以使用一个巨大的值
无穷大
将非给定项排序到顶部

所需订单的数值应小于零、零或大于零。为了得到这个结果,你可以把它的增量作为简单的数字

b - a // sorts descending
对于数组中未使用的索引,您可以使用进行检查,并通过使用比通常作为数组中的数字更大的值来获取一个值,该值可以移动或保持该项位于顶部的实际位置,即

var数据=[“HDR”,“按燃料类型当前最新更新日期为20180719150500”],[“FTR”,“14”],[“FUELINSTHHCUR”,“OCGT”,“0”,“0”,“0.0”,“0”,“0.0”,“0.0”,“0”,“0.0”,“0”,“0.0”,“0”,“0.0”],[“FUELINSTHHCUR”,“煤”,“947”,“3.0”,“900”,“2.9”,“15144”,“2.2”],[“FUELINSTHHCUR”,“核”,“6407”,“20.4”,“6477”、“20.8”、“158268”、“22.5”]、[“燃料Insthhcur”、“风”、“1710”、“5.4”、“1678”、“5.4”、“11903”、“1.7”]、[“燃料Insthhcur”、“PS”、“165”、“0.5”、“174”、“0.6”、“6854”、“1.0”]、[“燃料Insthhcur”、“CCGT”、“17355”、“55.2”、“17144”、“55.1”、“382043”、“54.3”]、[“燃料Insthhcur”、“其他”、“59”、“0.2”、“0.2”、“0.2”、“0.2”]、[“燃料Insthhhhhhcur”]、[“燃料Instcur“,”1998“,”6.4“,”1998“,”6.4“,”47363“,”6.7“,”[”燃料研究所“,”INTIRL“,”0“,”0“,”0.0“,”0.0“,”1960“,”0.3“,[”燃料研究所“,”INTNED“,”1001“,”3.2“,”3.3“,”3.3“,”,[”燃料研究所“,”INTEW“,”0“,”0.0“,”0.0“,”0.0“,”0.0“,”0.0“,”,[”燃料研究所“,”生物量“,”1649“,”5.2“,”1621“,”5.2“,”5.2“,”48031“,“31448”、“100.0”、“31128”、“100.0”、“703547”、“100.0”]、[“FuelInsthcur”、“NPSHYD”、“157”、“0.5”、“77”、“0.2”、“2675”、“0.4”];
排序((a,b)=>(b?b[2]中的2:无限)-(a?a[2]中的2:无限));
console.log(数据);

。作为控制台包装{max height:100%!important;top:0;}
您可以使用一个巨大的值
无穷大
将非给定项排序到顶部

期望所需订单的数值小于零、零或大于零。要获得此结果,可以将其增量作为简单数字

b - a // sorts descending
对于数组中未使用的索引,您可以使用进行检查,并通过使用比通常作为数组中的数字更大的值来获取一个值,该值可以移动或保持该项位于顶部的实际位置,即

var数据=[“HDR”,“按燃料类型当前最新更新日期为20180719150500”],[“FTR”,“14”],[“FUELINSTHHCUR”,“OCGT”,“0”,“0”,“0.0”,“0”,“0.0”,“0.0”,“0.0”,“0”,“0”,“0.0”,“0”,“0.0”],[“FUELINSTHHCUR”,“煤”,“947”,“3.0”,“900”,“2.9”,“15144”,“2.2”],[“FUELINSTHHCUR”,“核”,“6407”,“20.4”,”6477、20.8、158268、22.5“]、[“燃料Insthhcur”、“风”、“1710”、“5.4”、“1678”、“5.4”、“11903”、“1.7”]、[“燃料Insthhcur”、“PS”、“165”、“0.5”、“174”、“0.6”、“6854”、“1.0”]、[“燃料Insthhcur”、“CCGT”、“17355”、“55.2”、“17144”、“55.1”、“382043”、“54.3”]、[“燃料Insthhcur”、“其他”、“59”、“0.2”、“0.2”、“0.2”、“0.2”]、[“燃料Insthhhhhhhcur”]、[“,”1998“,”6.4“,”1998“,”6.4“,”47363“,”6.7“,”[”燃料研究所“,”INTIRL“,”0“,”0“,”0.0“,”0.0“,”1960“,”0.3“,[”燃料研究所“,”INTNED“,”1001“,”3.2“,”3.3“,”3.3“,”,[”燃料研究所“,”INTEW“,”0“,”0.0“,”0.0“,”0.0“,”0.0“,”0.0“,”,[”燃料研究所“,”生物量“,”1649“,”5.2“,”1621“,”5.2“,”5.2“,”48031“,“31448”、“100.0”、“31128”、“100.0”、“703547”、“100.0”]、[“FuelInsthcur”、“NPSHYD”、“157”、“0.5”、“77”、“0.2”、“2675”、“0.4”];
排序((a,b)=>(b?b[2]中的2:无限)-(a?a[2]中的2:无限));
console.log(数据);

.as控制台包装{最大高度:100%!重要;顶部:0;}
您在
pareFloat
中缺少的
s
。应该是
parseFloat
。索引1处的数组在索引2处没有元素。这是怎么回事?在排序之前,您是否也可以提供原始数组?您正在混合不同类型的记录。您需要先清理数据,然后对它们进行排序。索引1处的项目aND15显然只是一些聚合,索引0处的项是一些标签。@GetOfMyLawn这是未排序的数据。我尝试过的方法没有什么不同您在
pareFloat
中缺少
s
。应该是
parseFloat
。您在索引1处的数组在索引2处没有元素。这是怎么回事?您可以这样做吗所以,在排序之前提供原始数组?您正在混合不同类型的记录。您需要首先清理数据,然后对它们进行排序。索引1和15处的项显然只是一些聚合,而索引0处的项是一些标签。@GetOffMyLawn这是未排序的数据。我尝试过的方法对这类工作没有任何影响但它是在每个数组的[1]项上排序。我需要从每个数组的[2]项从最大值到最小值进行排序?这种方法有效,但它是在每个数组的[1]项上排序。我需要从每个数组的[2]项从最大值到最小值进行排序。你能解释一下这是如何对数据进行排序的吗?可以吗