Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Join - Fatal编程技术网

如何在javaScript中从一组数组中形成最大数

如何在javaScript中从一组数组中形成最大数,javascript,arrays,sorting,join,Javascript,Arrays,Sorting,Join,我有一个数组,arr=[1,3,34,44,4,45,6,76,9,98,23]并希望从上面的数组中形成最大的数。订单号是998766454443231 我试着在这些数字集合中使用它,对于2位数字来说效果很好,但对于更多的数字就不行了。有人能提出一个一般性的答案吗 按每个数字的第一个数字降序排列数组(通过转换为字符串数组) 将已排序数组的所有数字合并 函数交换阵列元素(arr、indexA、indexB){ 设温度=arr[indexA]; arr[indexA]=arr[indexB]; a

我有一个数组,
arr=[1,3,34,44,4,45,6,76,9,98,23]
并希望从上面的数组中形成最大的数。订单号是998766454443231

我试着在这些数字集合中使用它,对于2位数字来说效果很好,但对于更多的数字就不行了。有人能提出一个一般性的答案吗

  • 按每个数字的第一个数字降序排列数组(通过转换为字符串数组)
  • 将已排序数组的所有数字合并
  • 函数交换阵列元素(arr、indexA、indexB){
    设温度=arr[indexA];
    arr[indexA]=arr[indexB];
    arr[indexB]=温度;
    }
    函数最大数(arr){
    让狂妄自大;
    arrOfStrings=arr.map(n=>n.toString());
    for(设i=0;i
    
  • 按每个数字的第一个数字降序排列数组(通过转换为字符串数组)
  • 将已排序数组的所有数字合并
  • 函数交换阵列元素(arr、indexA、indexB){
    设温度=arr[indexA];
    arr[indexA]=arr[indexB];
    arr[indexB]=温度;
    }
    函数最大数(arr){
    让狂妄自大;
    arrOfStrings=arr.map(n=>n.toString());
    for(设i=0;iconsole.log(largestNum)
    您可以获取一个具有字符串值的数组,该数组包含
    a
    b
    的值,以及
    b
    a
    的值,并获取该数组的增量进行排序,这反映了两个字符串的排序顺序,以获得更大的值,以便以后进行合并

    函数getmax(数组){
    返回数组
    .map(字符串)
    .sort((a,b)=>(b+a)-(a+b))
    .加入(“”);
    }
    
    log(getmax([1,3,34,44,4,45,6,76,9,98,23])
    您可以获取一个具有字符串值的数组,该数组包含
    a
    b
    的值,以及
    b
    a
    的值,并获取该数组的增量进行排序,这反映了两个字符串的排序顺序,以获得更大的值,以便以后进行合并

    函数getmax(数组){
    返回数组
    .map(字符串)
    .sort((a,b)=>(b+a)-(a+b))
    .加入(“”);
    }
    
    log(getmax([1,3,34,44,4,45,6,76,9,98,23])编写一个比较函数compare(),并使用它对数字进行排序。给两个 数字第一和第二,我们比较两个数字firstsecond(第二个附加在第一个末尾)和secondfirst(第一个附加在第二个末尾)。若firstsecond较大,那个么在输出中第一个应该在第二个之前,否则第二个应该在第一个之前

    function sortArray(arr){
        arr.sort(function compare(first,second) {
            var firstsecond ='' + first + second;
            var secondfirst ='' + second + first;
            return firstsecond>secondfirst ? -1:1;
        })
    }
    
    function getLargestNumber(arr){
        var largestNumber = arr.join('')
        return largestNumber
    }
    var arr = [1,3,34,44,4,45,6,76,9,98,23]
    sortArray(arr)
    var result = getLargestNumber(arr)
    alert(result)
    

    编写一个比较函数compare(),并使用它对数字进行排序。给两个 数字第一和第二,我们比较两个数字firstsecond(第二个附加在第一个末尾)和secondfirst(第一个附加在第二个末尾)。若firstsecond较大,那个么在输出中第一个应该在第二个之前,否则第二个应该在第一个之前

    function sortArray(arr){
        arr.sort(function compare(first,second) {
            var firstsecond ='' + first + second;
            var secondfirst ='' + second + first;
            return firstsecond>secondfirst ? -1:1;
        })
    }
    
    function getLargestNumber(arr){
        var largestNumber = arr.join('')
        return largestNumber
    }
    var arr = [1,3,34,44,4,45,6,76,9,98,23]
    sortArray(arr)
    var result = getLargestNumber(arr)
    alert(result)
    

    怎么样:

    const concatMax=(…nums)=>nums.sort((a,b)=>(“”+b+a)-(“”+a+b)).join(“”);
    日志(concatMax(1,3,34,44,4,45,6,76,9,98,23))//99876645444343231
    
    console.log(concatMax(2,20,24,6,8))//8624220
    怎么样:

    const concatMax=(…nums)=>nums.sort((a,b)=>(“”+b+a)-(“”+a+b)).join(“”);
    日志(concatMax(1,3,34,44,4,45,6,76,9,98,23))//99876645444343231
    

    console.log(concatMax(2,20,24,6,8))//8624220
    你能给我们看你的代码吗…?你需要的(w/o
    拆分
    )都在标签中提到了。请分享这个输出的逻辑。也用两位数字给我们看你的尝试。我在其他一些系统中试过了,我会再写一次,并且肯定会发布到@gurvinder372你能给我们看你的代码吗…?你需要的一切(w/o
    拆分
    )标签中提到了。请分享此输出的逻辑。同时用2位数字向我们展示您的尝试。我在其他系统中也尝试过,我会再写一次,并肯定会发布@gurvinder372太多排序。@NinaScholz耶!,但逻辑与代码相同。我是JavaScript新手,我不知道不需要将类型转换为整数。我通过两个值的concatation和concatation切换值的concatation对数组进行排序,并将数字delta作为排序值返回。但是你是对的,你可以迭代这些数字并比较每个数字的值…@NinaScholz,我知道了。我编辑了我的代码,这次我只进行了一次排序,我想逻辑类似于“排序((a,b)=>(b+a)-(a+b))”对吧?看起来是一样的,但我对几乎相同的问题有一个解释。排序太多了。@NinaScholz耶!,但逻辑与代码相同。我是JavaScript新手,我不知道不需要将类型转换为整数。我通过两个值的concatation和concatation切换值的concatation对数组进行排序,并将数字delta作为排序值返回。但是你是对的,你可以迭代这些数字并比较每个数字的值…@NinaScholz,我知道了。我编辑了我的代码,这次我只排序了一次,我猜逻辑类似于“排序((a,b)=>(b+a)-(a+b))”对吧?看起来是一样的,但我对几乎相同的问题有一个解释。