Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで配列要素を再配置する


問題

リテラルの配列arrを最初で唯一の引数として受け取るJavaScript関数。この配列には、隣接して配置されたいくつかの重複が含まれています。

この関数は、配列内の2つの要素が等しくならないように、配列の要素を再配置する必要があります。このような配置の可能な方法が少なくとも1つ存在することが保証されている場合、関数は再配置された配列を返す必要があります。

たとえば、関数への入力が-

の場合
const arr = [7, 7, 7, 8, 8, 8];

その場合、出力は-

になります。
const output = [7, 8, 7, 8, 7, 8];

出力の説明:

他の正しい可能な再配置もあるかもしれません。

このためのコードは-

になります
const arr = [7, 7, 7, 8, 8, 8];
const rearrangeArray = (arr = []) => {
   const map = arr.reduce((acc, val) => {
      acc[val] = (acc[val] || 0) + 1 return acc;
   }, {});
   const keys = Object.keys(map).sort((a, b) => map[a] - map[b]);
   const res = [];
   let key = keys.pop();
   for(let i = 0; i < arr.length; i += 2){
      if(map[key] <= 0){
         key = keys.pop();
      };
      map[key] -= 1;
      res[i] = Number(key);
   };
   for(let i = 1; i < arr.length; i += 2){
      if(map[key] <= 0){
         key = keys.pop();
      };
      map[key] -= 1;
      res[i] = Number(key);
   };
   return res;
};
console.log(rearrangeArray(arr));

出力

そして、コンソールの出力は-

になります
[ 8, 7, 8, 7, 8, 7 ]

  1. JavaScript配列slice()

    JavaScriptのslice()メソッドは、配列内の選択された要素を返すために使用されます。 構文は次のとおりです- array.slice(start, end) 上記のstartパラメータは、選択を開始する場所を指定する整数ですが、endは選択が終了する場所です。 JavaScriptでslice()メソッドを実装しましょう- 例 <!DOCTYPE html> <html> <body>    <h2>Demo Heading</h2>    <p id="t

  2. JavaScript array.values()

    JavaScriptのarray.values()は、指定された配列のすべての値を含むイテレータオブジェクトを返します。 以下は、array.values()関数のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />