求助一个数组操作问题
高洛峰
高洛峰 2016-11-17 15:17:55
0
5
1682

我有一个数组需要将其反转,下面是列子,需要注意的最大值4的位置不能变,然后将最大值前面与后面的值分别重新倒置编排进去,数学不太好,求助大家帮忙

var arr = [1, 0, 4, 3, 2]; 反转为 var arr = [2, 3, 4, 0, 1]; var arr = [0, 4, 3, 2, 1]; 反转为 var arr = [3, 4, 0, 1, 2]; var arr = [4, 3, 2, 1, 0]; 反转为 var arr = [4, 0, 1, 2, 3]; var arr = [3, 2, 1, 0, 4]; 反转为 var arr = [0, 1, 2, 3, 4];


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua (5)
三叔
var array = [10, 20, 45, 56, 15]; var maxIndex = array.reduce((iMax, x, i, arr) => x > array[iMax] ? i: iMax, 0 ); var removedItem = array.splice(maxIndex , 1); var reversedArray = array.reverse(); reversedArray.splice(maxIndex, 0, removedItem[0]); console.log(reversedArray); // [15, 45, 20, 56, 10]

1 reduce获取到最大值的index

2 splice将最大值从原数组中移除

3 reverse将数组翻转

4 将最大值放回原位置


    学霸

    //PHP

    $arr = array(0, 4, 3, 2, 1); $b = array_shift($arr); $c = array_chunk($arr,2); asort($c['0']); asort($c['1']); print_r(array_merge($c['0'],(array)$b,$c['1']));


      三叔

      第一个方法


        学霸

        这样就可以了
        var arr = [3, 2, 1, 0, 4];
        var max = arr[0]; //最大值
        for(var i=1;i

        if(max}
        var index = arr.indexOf(max);//最大值下标
        arr.splice(index,1);//删除最大值
        arr.reverse();//倒叙数组 也可按照你自己的排序规则自己排序
        arr.splice(index,max,max);//指定位置添加元素
        console.log(arr);


          三叔

          这个其实很简单的,以空间换时间,先翻转,然后连拼3个,再计算之前的最大值所在的位置,进行新数组的切割。

          最大的性能消耗在getmax上。

          var test = [ [1, 0, 4, 3, 2], [0, 4, 3, 2, 1], [4, 3, 2, 1, 0], [3, 2, 1, 0, 4] ]; test.forEach(arr => console.log(reversal(arr))); // 反转 function reversal(arr) { let len = arr.length; // get max let max = arr[0]; let index = 0; arr.forEach((v, i) => { if (v <= max) return; max = v; index = i; }); // strat re let tmp = arr.reverse().concat(arr, arr); let newIndex = len - 1 - index + len; return tmp.slice(newIndex - index, newIndex + len - index); }


            Muat turun terkini
            Lagi>
            kesan web
            Kod sumber laman web
            Bahan laman web
            Templat hujung hadapan
            Tentang kita Penafian Sitemap
            Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!