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

JavaScriptで配列内のすべてのピークとその位置を見つける


ビルドアップ

JavaScriptに次の配列があるとします-

const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];

この配列の点をy軸にプロットし、隣接する各点をx軸上で単位距離だけ離すと、グラフは次のようになります-

JavaScriptで配列内のすべてのピークとその位置を見つける

このグラフは、この配列のインデックス3と7に、それぞれ値7と4の2つの極大値(ピーク)が存在することを明確に示しています。

問題

整数の配列arrを最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。

この関数は、最大値と位置の2つのプロパティを含むオブジェクトを返すことになっています。

これらのプロパティは両方とも配列になり、maxima配列には配列内のlocalmaximasの値が含まれ、positions配列には対応するインデックスが含まれます。

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

の場合

したがって、上記の配列の場合、出力は次のようになります-

const output = {
maximas: [7, 4],
positions: [3, 7]
};

以下はコードです-

const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
const findMaxima = (arr = []) => {
   let positions = []
   let maximas = []
   for (let i = 1; i < arr.length - 1; i++) {
      if (arr[i] > arr[i - 1]) {
         if (arr[i] > arr[i + 1]) {
            positions.push(i)
            maximas.push(arr[i])
         } else if (arr[i] === arr[i + 1]) {
            let temp = i
            while (arr[i] === arr[temp]) i++
            if (arr[temp] > arr[i]) {
               positions.push(temp)
               maximas.push(arr[temp])
            }
         }
      }
   }
   return { maximas, positions };
};
console.log(findMaxima(arr));

出力

その場合、出力は-

になります。
{ maximas: [ 7, 4 ], positions: [ 3, 7 ] }

  1. JavaScriptで後続と先行が配列されている要素を検索する

    最初で唯一の引数として整数の配列を受け取るJavaScript関数を作成する必要があります。 関数は、後続と先行の両方が配列に存在する元の配列からのそのようなすべての要素を含む新しい配列を作成して返す必要があります。つまり、要素numが元の配列にある場合、num-1とnum + 1も配列に存在する場合にのみ、その要素を結果配列に含める必要があります。 例- 入力配列が-の場合 const arr = [4, 6, 8, 1, 9, 7, 5, 12]; その場合、出力は-になります。 const output = [ 6, 8, 7, 5 ]; 例 このためのコードは-になります c

  2. 配列の共通部分を検索し、JavaScriptで繰り返し要素を含める

    問題 arr1とarr2の2つの配列をそれぞれ1番目と2番目の引数として受け取るJavaScript関数を作成する必要があります。 関数は、配列の共通部分(両方の共通要素)を検出する必要があります。両方の配列に2回出現する要素がある場合は、それらを結果配列にも2回含める必要があります。 たとえば、関数への入力が-の場合 const arr1 = [2, 7, 4, 6, 7, 4]; const arr2 = [7, 1, 9, 7, 4, 5]; その場合、出力は-になります。 const output= [7, 7, 4]; 例 このためのコードは-になります const arr