根据arr得到一个newArr。 
 
需求描述: 
 
-数组数据是以2为基数的任意数值,例如,2,4,8,16,32,64,128等。。。。,长度是4 
 
-数组从0号元素开始,相邻两个数两两比较, 
 
若一致则相加的结果放入新数组,继续比较。 
 
如果遇见0则跳过和下一位比较。 
 
如果不一致,将当前值放入新数组,继续比较。 
 
-新数组不够4位,则补0. 
 
 
 
示例: 
 
   Arr=>newArr  
 
  [2,2,2,2] => [4,4,0,0] 
 
     [2,0,2,2] => [4,2,0,0] 
 
     [2,4,2,2] => [2,4,4,0] 
 
     [2,4,4,2] => [2,8,2,0] 
 
     [0,2,0,2] => [4,0,0,0] 
 
 
- <!doctype html>
 
 - <html>
 
 - <head>
 
 - <meta charset="utf-8">
 
 - <title>无标题文档</title>
 
 - </head>
 
  
- <body>
 
 -         <script>
 
 -         var arr=[2,2,2,2];
 
 -         var newarr=[];
 
 -         var arrl=[];
 
 -         var j=0;
 
 -         var s=0;
 
 -                 for(var i=0;i<arr.length;i++)
 
 -                         {
 
 -                                 if(arr[i]==0)
 
 -                                         {continue;}
 
 -                                 else
 
 -                                         {
 
 -                                                 arrl[j]=arr[i];
 
 -                                                 j++;
 
 -                                         }
 
 -                         }
 
 -                 if(arrl.length<4)
 
 -                         {
 
 -                                 for(var a=2;a--;a>=0)
 
 -                                         arrl.push(0);
 
 -                         };
 
 -                 console.log(arrl)                 
 
 -                 for(var k=0 ;k<arrl.length;k++)//222
 
 -                         {
 
 -                                 for(var l=k+1;l<arrl.length;l++)
 
 -                                         {
 
 -                                                 if(arrl[k]==arrl[l])
 
 -                                                 {
 
 -                                                 newarr[s]=arrl[k]+arrl[l];
 
 -                                                         
 
 -                                                 }
 
 -                                                 else
 
 -                                                         {
 
 -                                                                 newarr[s]=arrl[k];
 
 -                                                                 //newarr[s+1]=arrl[l];
 
 -                                                                 
 
 -                                                         }
 
 -                                                 k++;l++;s++;
 
 -                                                 break;
 
 -                                         }
 
 -                         }        
 
 -                 for(var q=0;q<4;q++)
 
 -                         {
 
 -                                 if(newarr.length<4)
 
 -                                         {
 
 -                                                 newarr.push(0);
 
 -                                         }
 
 -                         }
 
 -                 console.log(newarr);
 
 - </script>
 
 - </body>
 
 - </html>
 
 
  复制代码 
 
这个代码不满足 
     [2,4,2,2] => [2,4,4,0] 
 
     [2,4,4,2] => [2,8,2,0] 
我实在是改不会了; 
越改越迷, 
求大哥救救我啊!
- function foo(arr) {
 
 -     const s = arr.filter(v => v !== 0).join(',')
 
 -     return (s.replace(/(\d+),\1/g, w => w[0] << 1) + ",0,0,0,0").split(',').map(v => 1 * v).slice(0,4) 
 
 - }
 
  
- console.log(foo([64, 128, 2, 2]))
 
  复制代码
好了 无bug的  
 
 
 |