Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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_Html_Algorithm_Sorting_Ecmascript 6 - Fatal编程技术网

Javascript中的大数排序

Javascript中的大数排序,javascript,html,algorithm,sorting,ecmascript-6,Javascript,Html,Algorithm,Sorting,Ecmascript 6,让我知道排序数组的两个代码段之间的区别 片段1- 片段2- 我有一个文件-,代码段2可以对数据进行排序,但代码段1不能 供参考- 问题陈述- 考虑一个数字字符串数组,其中每个字符串都是一个从到位的正数。按整数值的非降序或升序对数组的元素进行排序,然后返回已排序的数组 范例 返回数组['1','3','150','200'] 功能描述 在下面的编辑器中完成bigSorting函数 bigSorting具有以下参数: 字符串未排序[n]:作为字符串的未排序整数数组 返回 字符串[n]:按数字顺序排序

让我知道排序数组的两个代码段之间的区别

片段1-

片段2-

我有一个文件-,代码段2可以对数据进行排序,但代码段1不能

供参考-

问题陈述-

考虑一个数字字符串数组,其中每个字符串都是一个从到位的正数。按整数值的非降序或升序对数组的元素进行排序,然后返回已排序的数组

范例

返回数组['1','3','150','200']

功能描述

在下面的编辑器中完成bigSorting函数

bigSorting具有以下参数:

字符串未排序[n]:作为字符串的未排序整数数组 返回

字符串[n]:按数字顺序排序的数组 输入格式

第一行包含一个整数,即中的字符串数。 随后的每一行都包含一个整数字符串

约束条件

每个字符串保证表示一个正整数。 没有前导零。
中所有字符串的总位数介于和之间。

使用BigInt将其排序为数字:

    function bigSorting(unsorted) {
         return unsorted.sort((a, b) => (BigInt(a) > BigInt(b))? 0 : -1 );
    }
    bigSorting(unsorted).forEach(i=>console.log(i));

更新的垃圾箱:


这些数字对于javascript来说太大了。很可能第二个代码段将它们视为字符串而不是数字。@evolutionxbox是的,这很好。。但是如果a.length==b.length{返回a>b?1:-1;}如果不在此处中断,该条件如何。.bcoz在这种情况下,数字也太长了吗?文件中的数字。。。是否每行只有一个数字?如果该数字的长度为17或更多,则在进行任何比较之前,不会将这些数字进行工作转换,并尝试一下。就像evolutionxbox提到的那样,问题可能是它们被当作字符串处理。哈哈,我刚刚建议OP将它们转换为BigInt。做得很好。很棒…Lol工作解决方案链接向我报告了一个错误:TypeError:无法在Array.sort处将BigInt值转换为数字-使用Chrome@PeterB-有趣…对我来说很好。让我检查一下。在我的机器上工作!哈哈,对我来说很好@你在用什么浏览器?
function bigSorting(unsorted) {
    return unsorted.sort((a, b) => {
        if (a.length == b.length) {
            return a > b ? 1 : -1;
        }

        return a.length - b.length;
    });

}
    function bigSorting(unsorted) {
         return unsorted.sort((a, b) => (BigInt(a) > BigInt(b))? 0 : -1 );
    }
    bigSorting(unsorted).forEach(i=>console.log(i));